프로그래머스 Lv.2 2019 KAKAO BLIND RECRUITMENT 오픈채팅방
채팅방에 들어오고 나가거나, 닉네임을 변경한 기록이 담긴 문자열 배열 record가 매개변수로 주어질 때, 모든 기록이 처리된 후, 최종적으로 방을 개설한 사람이 보게되는 메시지를 문자열 배열 형태로 return하는 solution 함수를 작성하는 문제이다.
아이디에 대해 닉네임을 생성하거나 바꿀 때마다 저장할 HashMap을 생성하여 문제를 해결하였다. for문을 통해 아이디를 key값으로 두고, 아이디가 생성되거나 바뀔 때마다 HashMap에 put해주었다. 반복문이 끝난 뒤에는 최종적으로 변경된 아이디만 저장되어 있게 하였다.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
class Solution {
public String[] solution(String[] record) {
String[] answer;
Map<String, String> nickname = new HashMap<>();
for (int i = 0; i < record.length; i++) {
String[] command = record[i].split(" ");
if (command[0].equals("Enter") || command[0].equals("Change")) {
nickname.put(command[1], command[2]);
}
}
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < record.length; i++) {
String[] command = record[i].split(" ");
String nick = nickname.get(command[1]);
if (command[0].equals("Enter")) {
list.add(nick + "님이 들어왔습니다.");
} else if (command[0].equals("Leave")) {
list.add(nick + "님이 나갔습니다.");
}
}
answer = new String[list.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = list.get(i);
}
return answer;
}
}