2019 카카오 블라인드 채용 코딩 테스트 문제를 시작해봅시다.
1번 문제인가봅니다. 깔끔하게 10분컷!
import java.util.*;
class Solution {
public static String[] solution(String[] record) {
StringTokenizer st;
Map<String, String> uidList = new HashMap<>();
List<String[]> chatList = new ArrayList<>();
for(int i = 0; i < record.length; i++) {
String uid = null, nickname = null;
st = new StringTokenizer(record[i], " ");
switch(st.nextToken()) {
case "Enter":
uid = st.nextToken();
nickname = st.nextToken();
uidList.put(uid, nickname);
String[] enterMsg = {uid, "님이 들어왔습니다."};
chatList.add(enterMsg);
break;
case "Leave":
uid = st.nextToken();
String[] leaveMsg = {uid, "님이 나갔습니다."};
chatList.add(leaveMsg);
break;
case "Change":
uid = st.nextToken();
nickname = st.nextToken();
uidList.replace(uid, nickname);
break;
}
}
String[] answer = new String[chatList.size()];
for(int i = 0; i < answer.length; i++) {
answer[i] = uidList.get(chatList.get(i)[0]) + chatList.get(i)[1];
}
return answer;
}
}
문제를 보면
모든 유저는 [유저 아이디]로 구분한다.
란 말이 있습니다.
보자마자 묻지도 따지지도 않고 Map으로 표현하면 되겠구나 생각했습니다.
record에 있는대로 다 갱신해주고 나서 닉네임을 확정하되, 들어오고 나갈 때마다 로그가 남기 때문에 로그에 대한 정보를 문자열 배열({uid, "뭐시기저시기"}) 리스트로 넣어놓았습니다.
그리고 닉네임을 변경하는 경우 Map을 갱신해주면 됩니다.
마지막에 answer 배열에 넣을 때 Map에서 uid를 키로 갖고 있는 값 + "뭐시기저시기" 를 넣어주면 끝!!
이번주 코테전까지 19년껀 다 풀어봐야게씀니다...!!
'Algorithm > Programmers' 카테고리의 다른 글
[2019 KAKAO BLIND RECRUITMENT][조합] 후보키 - Java (0) | 2020.09.08 |
---|---|
[2019 KAKAO BLIND RECRUITMENT][PQ] 실패율 - Java (0) | 2020.09.08 |
[2020 카카오 인턴십][BFS/위상 정렬] 동굴 탐험 - Java (0) | 2020.09.08 |
[2020 카카오 인턴십][BFS] 경주로 건설 - Java (1) | 2020.09.05 |
[2020 카카오 인턴십][투 포인터] 보석 쇼핑 - Java (0) | 2020.09.04 |