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를 사용했다.
내가 풀이한 방식보다 더 나은 방식이 있을 것 같아서 찾아보니
객체지향적으로 풀이한 방식을 보았다.
나도 그런 방식으로 리팩토링을 진행해봐야겠음!