[Programmers] level 2 - 오픈채팅방 (2019 KAKAO BLIND RECRUITMENT)

👩🏻‍💻 문제

문제가 너어무 길다 요약을 하자면

record 배열에 "행동 유저아이디 닉네임(Leave 일 때는 없음)"으로 구성된 문자열이 있고, 이 record 배열이 함수 파라미터로 들어온다.
리턴해야 하는 result 배열은 1. 다시 들어올 때 바뀐 닉네임 2. Change로 바뀐 닉네임이 반영된 최종 메시지 문자열을 원소로 갖는다.

👩🏻‍💻 정답 코드

import java.util.*;

class Solution {
    public String[] solution(String[] record) {
        String[] answer = {};
        ArrayList<String[]> list = new ArrayList<>();
        HashMap<String, String> map = new HashMap<>();

        StringTokenizer st;
        for (int i = 0; i < record.length; i++) {
            st = new StringTokenizer(record[i]);

            String operation = st.nextToken();
            String uid = st.nextToken();
            if (st.hasMoreTokens()){ //enter, change
                String nickname = st.nextToken();
                map.put(uid,nickname);
            }
            if (!operation.equals("Change")) //enter, leave
                list.add(new String[]{operation, uid});
        }

        answer = new String[list.size()];
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i)[0].equals("Enter")){
                answer[i] = map.get(list.get(i)[1])+"님이 들어왔습니다.";
            }
            else answer[i] = map.get(list.get(i)[1])+"님이 나갔습니다.";
        }

        return answer;
    }
}


👩🏻‍💻 Remember

JAVA COLLECTION FRAMEWORK

좋은 웹페이지 즐겨찾기