코딩 테스트

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

로승리 2022. 3. 3. 19:22

이번 문제는 오랜만에 재밌게 풀었던 문제였다.

처음 생각보다는 조금 시간이 걸렸지만 깔끔한 문제였다.

해시맵은 데이터 저장을 리스트는 로그를 남겨 반환했다.

 

해외에서는 한국처럼 인터넷을 쓸 수 없어서 너무 불편하다... 


최종 코드

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
class Solution {
    public String[] solution(String[] record) {
        // 로그를 저장하기 위한 리스트
        List<String> list = new ArrayList<>();
        // 아이디와 닉네임을 저장하기 위한 해시맵
        HashMap<String,String> hm = new HashMap<>();
        for (int i= 0; i < record.length; i++) {
            String[] temp = record[i].split(" ");
            if (temp[0].equals("Enter")) {
                hm.put(temp[1], temp[2]);
                list.add(temp[1]+"님이 들어왔습니다.");
            }else if(temp[0].equals("Leave")) {
                list.add(temp[1]+"님이 나갔습니다.");
            }else {
                hm.replace(temp[1],temp[2]);
            }
        }
        // 아이디로 저장된 리스트를 닉네임으로 변경
        String[] answer = new String[list.size()];
        for (int i = 0; i < list.size(); i++) {
        int idx = list.get(i).indexOf("님");
            String id = list.get(i).substring(0,idx);
            answer[i] = hm.get(id)+list.get(i).substring(idx);
        }
        return answer;
    }
}