본문 바로가기
정리/알고리즘

프로그래머스 - 오픈채팅방

by Hudini30 2022. 3. 31.

프로그래머스 (코딩테스트 연습) - 오픈채팅방

해당 문제는 고유한 user_id 값이 주어졌기때문에 user_id를 키로 하고 값을 nickname으로 두는 해시 맵을 구성해 데이터를 저장 한 후 이후 record 를 돌면서 Enter 혹은 Leave 상황일때 메시지 로그를 user_id를 통해 마지막 Nickname 값을 가져와서 셋팅하도록 문제를 풀었습니다.

private static final String ENTER_POSTFIX = "님이 들어왔습니다.";
    private static final String OUT_POSTFIX = "님이 나갔습니다.";
    private static final String ENTER = "Enter";
    private static final String CHANGE = "Change";
    private static final String LEAVE = "Leave";
    private static final String SPLIT_TEXT = " ";

    public String[] solution(String[] record) {
        List<String> answer = new ArrayList<>();
        Map<String, String> idNickNameMap = new HashMap<>();

        for (String infoStr : record) {
            String[] info = infoStr.split(SPLIT_TEXT);
            if (info[0].equals(ENTER)) {
                idNickNameMap.put(info[1], info[2]);
            } else if (info[0].equals(CHANGE)) {
                idNickNameMap.put(info[1], info[2]);
            }
        }

        for (String infoStr : record) {
            String[] info = infoStr.split(SPLIT_TEXT);
            if (info[0].equals(ENTER)) {
                answer.add(idNickNameMap.get(info[1]) + ENTER_POSTFIX);
            } else if (info[0].equals(LEAVE)) {
                answer.add(idNickNameMap.get(info[1]) + OUT_POSTFIX);
            }
        }

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

댓글