프로그래머스 오픈채팅방 (Java,자바)

jonghyukLee·2021년 9월 3일
0

이번에 풀어본 문제는
프로그래머스 오픈채팅방 입니다.

📕 문제 링크

❗️코드

import java.util.*;
class Chat
{
    String action,uid;
    public Chat(String action, String uid)
    {
        this.action = action;
        this.uid = uid;
    }
    public String print()
    {
        if(this.action.equals("Enter")) return "들어왔습니다.";
        return "나갔습니다.";
    }
}
class Solution {
    public String[] solution(String[] record) {
        String[] answer;
        HashMap<String, String> hm = new HashMap<>(); // uid, name정보
        ArrayList<Chat> al = new ArrayList<>();
        
        StringTokenizer st;
        for(String reco : record)
        {
            st = new StringTokenizer(reco);
            String action = st.nextToken();
            String uid = st.nextToken();
            if(!action.equals("Leave"))
            {
                String name = st.nextToken();
                hm.put(uid,name);
            }
            if(!action.equals("Change"))al.add(new Chat(action,uid));
        }
        
        answer = new String[al.size()];
        int answerIdx = 0;
        for(Chat c : al)
        {
            StringBuilder sb = new StringBuilder();
            sb.append(hm.get(c.uid)).append("님이 ").append(c.print());
            answer[answerIdx++] = sb.toString();
        }
        
        return answer;
    }
}

📝 풀이

채팅방에서 입장,퇴장을 기록하며 닉네임 변경시 이전 기록에도 반영되게 하는 문제입니다.
유일한 uid값이 존재하므로 해시맵을 활용하여 uid,닉네임 값을 담고있도록 하였고,
최종 출력을 위해 action(Enter , Leave)들을 담기위한 ArrayList를 사용했습니다.
모든 입력을 마치고, ArrayList를 탐색하여 출력하게되면 마지막으로 변경된 닉네임으로 앞서 기록된 모든 액션들을 출력하게됩니다.

📜 후기

어제 레벨3문제를 풀어서그런지 너무 쉽게 풀었네요ㅋㅋㅋㅋ
잠시나마 행복했습니다^~^

profile
머무르지 않기!

0개의 댓글