본문 바로가기
알고리즘/프로그래머스

(LEVEL 2)프로그래머스 - 오픈채팅방 (JAVA)

by 꾸준함 2023. 4. 10.

문제


입출력 예


 

풀이.

1. record의 길이만큼 for문을 돌면서 temp에 띄어쓰기 별로 나눈 문자열들을 임시 저장한다.

2. 길이가 3일때만 ID별로 닉네임을 갱신한다( HashMap사용, Leave일땐 길이가 2)

3.다시 for문을 돌며 temp에 임시로 uid를 저장하고 저장해두었던HashMap에서 id별로 닉네임을 가져온다.

4. Enter / Leave 일때만 answer에 추가한다.

5. 마지막으로 return 자료형이 String[]이므로 answer.toArray를 사용해 리턴해준다.

  -> ArrayList를 사용한 이유는 처음 answer의 크기를 초기화할 때 record의 길이와는 다를수있다.  (Change가 들어가면 다름.) 그래서 가변적인 List를 활용해 저장한다음 return할 때 바꾸어 주었다.

 

 


코드

import java.util.*;
class Solution {
    public String[] solution(String[] record) {
        ArrayList<String> answer = new ArrayList<>();
        HashMap<String,String> idName = new HashMap<>();
        for(int i=0;i<record.length;i++){
            String [] temp = record[i].split(" ");
            if(temp.length==3)
                idName.put(temp[1],temp[2]);
        }
        for(int i=0;i<record.length;i++){
            String [] temp = record[i].split(" ");
            String nickname = idName.get(temp[1]);
            if(temp[0].equals("Enter")){
                answer.add(nickname+"님이 들어왔습니다.");
            }else if(temp[0].equals("Leave")){
                answer.add(nickname+"님이 나갔습니다.");
            }
        }


        return answer.toArray(new String[0]);
    }
}