[Programmers]-오픈채팅방
이번 프로그래머스 문제는 오픈채팅방 입니다.
사용자가 들어왔다 나갔을 때를 표현하고 사용자의 닉네임이 바뀔 때 ID에 따라 log기록의 닉네임을 변경해준다.
문제 풀이
아이디와 닉네임 변경을 보고 해쉬맵으로 풀면 쉽겠다 라고 생각했다.
문제풀이
- HashMap을 이용해
- 아이디는 Key 닉네임은 Value
주석에 상세하게 적어 놓았다. 코드가 길지만 어렵지 않다.
import java.util.HashMap;
class Solution {
public String[] solution(String[] record) {
String[][] clone = new String[record.length][3];
for(int i=0;i<clone.length;i++){//나누기
clone[i] = record[i].split(" ");
}
int Count = 0;//기록 갯수 (change는 기록에 나오지 않으니..)
HashMap<String,String> data = new HashMap<String,String>();
for(int i=0;i<clone.length;i++){
if(clone[i][0].equals("Enter")){
data.put(clone[i][1], clone[i][2]);
Count++;
}
else if(clone[i][0].equals("Change")){
data.put(clone[i][1], clone[i][2]);
}
else if(clone[i][0].equals("Leave")) Count++;
}
String[] answer = new String[Count];
int cnt = 0;
for(int i=0;i<clone.length;i++){
if(clone[i][0].equals("Enter")){
answer[cnt++] = data.get(clone[i][1])+"님이 들어왔습니다.";
}
else if(clone[i][0].equals("Leave")){
answer[cnt++] = data.get(clone[i][1])+"님이 나갔습니다.";
}
}
return answer;
}
}
사실 split()을 쓰지 않아도 charAt()로 될거같았다.