[Programmers]level 2-オープンチャットルーム(2019 KAO BLIND RECRUIMENT)


👩🏻‍💻 質問する



要約すると問題が多すぎる.
record配列には、関数パラメータに入る「動作ユーザIDニックネーム(Leaveでは存在しない)」からなる文字列があります.
返される結果の配列は1です.新しく入った時に変えたニックネーム2ニックネームの変更を反映する最終メッセージ文字列を要素とします.

👩🏻‍💻 正しいコード

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