코테/lvl2

프로그래머스 오픈채팅방(lvl2) 풀어보기

디비드킴 2026. 9. 14. 14:31

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/42888

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 핵심

  • 채팅방에 들어오고 나가거나, 닉네임을 변경한 기록이 담긴 문자열 배열 record가 매개변수로 주어질 때, 모든 기록이 처리된 후, 최종적으로 방을 개설한 사람이 보게 되는 메시지를 문자열 배열 형태로 return 하도록 solution 함수를 완성하라.

문제 풀이법

-해당 uid의 마지막 닉네임 확인하기

상태값에 따른 문자열 만들기


코드

 public static String[] solution(String[] record) {
        Map<String, String> map = new LinkedHashMap<>();
        int c=0;
        for (String re : record) {
            String[] arr = re.split(" ");
            String uid = arr[1];
            String action = arr[0];
            if (!action.equals("Leave")) {
                map.put(uid, arr[2]);
            }
            if(action.equals("Change")){
                c+=1;
            }
        }
        System.out.println(map);
        String[] answer = new String[record.length-c];
        int index=0;
        for(String re:record){
            String[] arr = re.split(" ");
            String uid = arr[1];
            String action = arr[0];
            String message=map.get(uid)+"님이 ";
            if(action.equals("Enter")){
                message+="들어왔습니다.";  
            }else if(action.equals("Leave")){
                message+="나갔습니다.";
            }else{
                continue;
            }
            answer[index]=message;
            index+=1;
        }
        System.out.println(Arrays.toString(answer));
        return answer;
    }

 


결과



gpt피드백

-불필요한 값이 좀 있지만 괜찮다


배운점 느낀점

-무난하게 풀었다