프로그래머스_오픈채팅방

hwang·2024년 11월 3일
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;


class Solution {
    public String[] solution(String[] record) {
     
        
        ArrayList <String> arrList = new ArrayList<>();
        Map<String,String> map = new HashMap<>();
        
        for(String msg : record) {
			String strArr [] = msg.split(" ");
			if(strArr[0].equals("Enter") || strArr[0].equals("Change") ) {
				map.put(strArr[1], strArr[2]);
			}
		}
        
        	for(int i = 0 ; i<record.length; i++) {
			String strArr [] = record[i].split(" ");
			
			String result = map.get(strArr[1])+"님이 ";
			
			if(strArr[0].equals("Enter") || strArr[0].equals("Leave") ) {
				switch (strArr[0]) {
					case "Enter" :
						result = result + "들어왔습니다.";
						break;
					case "Leave" :
						result = result + "나갔습니다.";
						break;
				}
				arrList.add(result);
			}
			
		}
		String [] answer = new String [arrList.size()];
		answer = arrList.toArray(answer);
        return answer ;
        
       
    }
}

id를 보자마자 hashMap을 써야겠다고 생각했다 (key,value 특징)
첫번째 for문은 닉네임을 넣어주는 부분
두번째 for문은 최종 result msg 를 구해서 ArrayList에 add
마지막 answer는 배열형태로 return해야하기 때문에 toArray를 사용했다.

내가 풀이한 방식보다 더 나은 방식이 있을 것 같아서 찾아보니
객체지향적으로 풀이한 방식을 보았다.
나도 그런 방식으로 리팩토링을 진행해봐야겠음!

profile
🍀

0개의 댓글