티스토리 뷰

 

 

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

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

programmers.co.kr

닉네임을 변경하면 이전에 입장했던 유저의 닉네임도 변경해주어야 한다.

그러므로 먼저 Map<userId, nickname> 을 설정해줬다.

그 뒤, record를 순회하면서 StringBuilder에 append해주었다.

 

import java.util.*;

class Solution {
    public String[] solution(String[] record) {
        String[] answer;
        List<String> chat = new ArrayList<>();
        Map<String, String> map = new LinkedHashMap<>();
        String enter = "님이 들어왔습니다.";
        String leave = "님이 나갔습니다.";
        int length = record.length;
        for(int i = 0; i<length;i++) {
            StringTokenizer st = new StringTokenizer(record[i]);
            String action = st.nextToken();
            if(action.equals("Leave")) {
                continue;
            }
            String userId = st.nextToken();
            String nickname = st.nextToken();
            map.put(userId, nickname);
        }
        for(int i = 0;i<length;i++) {
            StringTokenizer st = new StringTokenizer(record[i]);
            String action = st.nextToken();
            String userId = st.nextToken();
            if(action.equals("Change")) {
                continue;
            }
            StringBuilder sb = new StringBuilder();
            sb.append(map.get(userId));
            sb.append(action.equals("Enter")?enter:leave);
            chat.add(sb.toString());
        }
        answer = new String[chat.size()];
        for(int i = 0 ;i<chat.size();i++) {
            answer[i] = chat.get(i);
        }
        return answer;
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함