문제가 너어무 길다 요약을 하자면
record 배열에 "행동 유저아이디 닉네임(Leave 일 때는 없음)"으로 구성된 문자열이 있고, 이 record 배열이 함수 파라미터로 들어온다.
리턴해야 하는 result 배열은 1. 다시 들어올 때 바뀐 닉네임 2. Change로 바뀐 닉네임이 반영된 최종 메시지 문자열을 원소로 갖는다.
import java.util.*;
class Solution {
public String[] solution(String[] record) {
String[] answer = {};
ArrayList<String[]> list = new ArrayList<>();
HashMap<String, String> map = new HashMap<>();
StringTokenizer st;
for (int i = 0; i < record.length; i++) {
st = new StringTokenizer(record[i]);
String operation = st.nextToken();
String uid = st.nextToken();
if (st.hasMoreTokens()){ //enter, change
String nickname = st.nextToken();
map.put(uid,nickname);
}
if (!operation.equals("Change")) //enter, leave
list.add(new String[]{operation, uid});
}
answer = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
if (list.get(i)[0].equals("Enter")){
answer[i] = map.get(list.get(i)[1])+"님이 들어왔습니다.";
}
else answer[i] = map.get(list.get(i)[1])+"님이 나갔습니다.";
}
return answer;
}
}