레벨 2 치고는 쉬웠던 문제였다.
DB처럼 ID를 KEY, 닉네임을 VALUE로 하는 맵을 만든다.
split의 크기가 2보다 크다면 map에 넣어준다.
( map에 key 값이 같다면 value만 수정이 된다. )
( 닉네임이 변경되는 경우는 Enter, Change로 인한 크기가 3인 경우밖에 없다. )
이제 해당 기록을 변환하여 담을 리스트를 하나 생성한다
기록을 돌면서 행동이 Enter나 Leave일 경우 해당 ID를 대입해 닉네임을 리스트에 넣어준다.
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]);
}
}