단순 구현
1. record
에서 string을 " "으로 split 후 명령어(split[0]
)을 기준으로 조건문을 만든다.
2. Enter와 Leave 기록을 남겨야 하니, 두 경우에 useId
와 E
또는 L
에 대하여 기록을 순서대로 저장한다.
3. Enter와 Change일 때 userId
에 따른 현재 nickname
을 idToNickname
이름의 hashMap
에 저장한다.
4. 이후 userId
와 EorL
list
에서 순서대로 꺼내면서 최종 기록을 answer
에 저장한다.
import java.util.*;
class Solution {
public String[] solution(String[] record) {
Map<String, String> idToNickname = new HashMap<>();
List<String> userIds = new ArrayList<>();
List<String> EorL = new ArrayList<>();
for (int i = 0; i < record.length; i++) {
String[] split = record[i].split(" ");
if (split[0].equals("Enter")) {
userIds.add(split[1]);
EorL.add("E");
idToNickname.put(split[1], split[2]);
} else if (split[0].equals("Leave")) {
userIds.add(split[1]);
EorL.add("L");
} else {
idToNickname.put(split[1], split[2]);
}
}
String[] answer = new String[userIds.size()];
for (int i = 0; i < userIds.size(); i++) {
answer[i] = idToNickname.get(userIds.get(i));
answer[i] += EorL.get(i).equals("E") ? "님이 들어왔습니다." : "님이 나갔습니다.";
}
return answer;
}
}