[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()로 될거같았다.