오픈채팅방

문제


문제 풀이

세션을 관리하 듯이 하는 문제라서 생각보다 접근하기는 쉬었다. 일단 map을 두개를 이용해서 id 하나의 공통된 String key 값을 주고 한쪽은 enter와 leave를 관리하고 한쪽은 change에 따른 닉네임만 관리 해주면 되는 문제이다. 


나의 답안

public static String[] solution(String[] record) {
    ArrayList<String> answer = new ArrayList<>();
    Map<String, String> user = new HashMap<>();
    LinkedList<Map<String, String>> chat = new LinkedList<>();

    for (int i = 0; i < record.length; i++) {
        String[] s = record[i].split(" ");
        HashMap<String, String> log = new HashMap<>();

        if ("Enter".equals(s[0])) {
            user.put(s[1], s[2]);
            log.put(s[1], s[0]);
            chat.add(log);
        } else if ("Leave".equals(s[0])) {
            log.put(s[1], s[0]);
            chat.add(log);
        } else {
            user.put(s[1], s[2]);
        }
    }

    for (Map<String, String> map : chat) {
        for (String key : map.keySet()){
            String name = user.get(key);
            String type = map.get(key);
            if ("Enter".equals(type)){
                answer.add(name +"님이 들어왔습니다.");
            } else {
                answer.add(name +"님이 나갔습니다.");
            }
        }
    }


    return answer.toArray(String[]::new);
}

'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글

땅따먹기  (0) 2023.04.05
주식 가격  (0) 2023.04.05
주차 요금 관리  (0) 2023.04.04
[3차] n진수 게임  (0) 2023.04.03
할인 행사  (0) 2023.04.03