이런 문제가 너무 좋다. 구조를 생각하고 구현하면 생각한대로 척척되는... 그렇다고 내 코드가 완벽한건 아니지만 그래도 뭔가 체계적으로 뭔가 된다는 느낌이 들 때 코딩이 정말 즐겁다.
import java.util.*;
class Solution {
    public String[] solution(String[] record) {
        ArrayList<String> chatLog = new ArrayList<>();
        HashMap<String, String> nickMap = new HashMap<>();
        
        for(String log : record){
            StringTokenizer st = new StringTokenizer(log);
            String command = st.nextToken();
            String userId = st.nextToken();
            String nickname = "";
            
            if(!command.equals("Leave")){
                nickname = st.nextToken();
            }
            
            switch(command){
                case "Enter":
                    nickMap.put(userId, nickname);
                    chatLog.add(userId + "님이 들어왔습니다.");
                    break;
                case "Leave":
                    chatLog.add(userId + "님이 나갔습니다.");
                    break;
                case "Change":
                    nickMap.put(userId, nickname);
                    break;
            }
        }
        
        String[] answer = new String[chatLog.size()];
        int logIdx = 0;
        
        for(String str : chatLog){
            int endOfId = str.indexOf("님");
            String userId = str.substring(0, endOfId);
            
            answer[logIdx++] = str.replace(userId, nickMap.get(userId));
        }
        
        return answer;
    }
}
import java.util.*;
class Solution {
public String[] solution(String[] record) {
//====================================
StringBuilder sb = new StringBuilder();
HashMap<String,String> user = new HashMap<>(); //아이디명, 닉네임
//====================================
for(int i=0;i<record.length;i++){
String[] word = record[i].split(" ");
if(word[0].equals("Enter") || word[0].equals("Change")){
user.put(word[1],word[2]);
}
}
}
제 코드는 어떤가유