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

레벨 2 치고는 쉬웠던 문제였다.

  1. DB처럼 ID를 KEY, 닉네임을 VALUE로 하는 맵을 만든다.

  2. split의 크기가 2보다 크다면 map에 넣어준다.
    ( map에 key 값이 같다면 value만 수정이 된다. )
    ( 닉네임이 변경되는 경우는 Enter, Change로 인한 크기가 3인 경우밖에 없다. )

  3. 이제 해당 기록을 변환하여 담을 리스트를 하나 생성한다

  4. 기록을 돌면서 행동이 Enter나 Leave일 경우 해당 ID를 대입해 닉네임을 리스트에 넣어준다.

  5. result를 String[] 타입으로 변환해주면 끝.

toArray(generator) generator(생성자)의 크기 지정이 리스트의 크기보다 작다면
자동으로 크기를 리스트의 크기에 맞게 지정해준다.

import java.util.*;

class Solution {
    public String[] solution(String[] record) {
        Map<String, String> mem_nick_map = new HashMap<>();

        for (var rec : record) {
            if(rec.split(" ").length > 2){
                var id = rec.split(" ")[1];
                var nickname = rec.split(" ")[2];
                mem_nick_map.put(id, nickname);
            }
        }

        List<String> result = new ArrayList<>();
        
        for (var rec : record){
            var behavior = rec.split(" ")[0];
            var id = rec.split(" ")[1];
            var nickname = mem_nick_map.get(id);
            if (behavior.equals("Enter")) {
                result.add(nickname + "님이 들어왔습니다.");
            } else if (behavior.equals("Leave")) {
                result.add(nickname + "님이 나갔습니다.");
            }
        }
        
        return result.toArray(new String[0]);
    }
}

좋은 웹페이지 즐겨찾기