개발/알고리즘

Programmers - 오픈채팅방

devNam 2021. 12. 25. 23:45
반응형
 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

// 문제 해설
// 1. user가 Change를 하거나 Leave 후 Enter를 해야 name을 변경이 가능하다.
// 2. user가 name을 변경하면 이전에 설정했던 name도 변경한 name으로 바뀐다.
public static String[] solution(String[] record) {
        List<String> answer = new ArrayList<>();
        HashMap<String, String> userIdName = new HashMap<>();

        for(String str : record) {
            String[] tempStr = str.split(" ");
            // Enter, Change인 경우 userIdName에 넣어준다
            // HashMap은 key가 같으면 값이 후에 들어오는 값으로 바뀐다
            // key - userId, value - name
            if(tempStr[0].equals("Enter") || tempStr[0].equals("Change")) {
                userIdName.put(tempStr[1], tempStr[2]);
            }
        }

        for(int i = 0 ; i < record.length ; i++) {
            String[] tempStr = record[i].split(" ");
            // key - userId에 해당되는 value 세팅
            String answerStr = userIdName.get(tempStr[1])+"님이 ";
            if(tempStr[0].equals("Enter")) {
                answerStr += "들어왔습니다.";
                answer.add(answerStr);
            } else if(tempStr[0].equals("Leave")) {
                answerStr += "나갔습니다.";
                answer.add(answerStr);
            }
        }
        return answer.toArray(new String[0]);
    }

 

반응형