[프로그래머스] LEVEL2 오픈채팅방 JAVA

Pixel Dophin·2023년 8월 8일
0

프로그래머스

목록 보기
35/55

오픈채팅방

문제링크

풀이

단순 구현
1. record에서 string을 " "으로 split 후 명령어(split[0])을 기준으로 조건문을 만든다.
2. Enter와 Leave 기록을 남겨야 하니, 두 경우에 useIdE 또는 L에 대하여 기록을 순서대로 저장한다.
3. Enter와 Change일 때 userId에 따른 현재 nicknameidToNickname이름의 hashMap에 저장한다.
4. 이후 userIdEorL list에서 순서대로 꺼내면서 최종 기록을 answer에 저장한다.

코드

import java.util.*;

class Solution {
    public String[] solution(String[] record) {
        Map<String, String> idToNickname = new HashMap<>();
        
        List<String> userIds = new ArrayList<>();
        List<String> EorL = new ArrayList<>();
        
        for (int i = 0; i < record.length; i++) {
            String[] split = record[i].split(" ");
            if (split[0].equals("Enter")) {
                userIds.add(split[1]);
                EorL.add("E");
                idToNickname.put(split[1], split[2]);
            } else if (split[0].equals("Leave")) {
                userIds.add(split[1]);
                EorL.add("L");
            } else {
                idToNickname.put(split[1], split[2]);
            }
        }
        
        String[] answer = new String[userIds.size()];
        for (int i = 0; i < userIds.size(); i++) {
            answer[i] = idToNickname.get(userIds.get(i));
            answer[i] += EorL.get(i).equals("E") ? "님이 들어왔습니다." : "님이 나갔습니다.";
        }
        return answer;
    }
}
profile
안녕 👋 성장하고픈 개발자 💻 입니다

0개의 댓글

관련 채용 정보