반응형
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class 오픈채팅방 {
public String[] solution(String[] record) {
String[] answer = {};
String[] log = new String[record.length]; // Enter, Leave를 담아두는 log 배열
// <id, nickname>의 HashMap ex. <uid1234, Prodo>
Map<String, String> id_nick = new HashMap<String, String>();
// <index, uid>의 HashMap ex. <0, uid1234> -> 0번째는 uid1234 아이디를 가진 유저의 행동이 입력되어야 한다..
Map<Integer, String> idx_ans = new HashMap<Integer, String>();
StringTokenizer st;
int idx = 0;
for (String s : record) {
st = new StringTokenizer(s);
log[idx] = st.nextToken();
String id = st.nextToken();
String nickname = null;
if(!log[idx].equals("Leave")) {
nickname = st.nextToken();
id_nick.put(id, nickname);
}
// 닉네임 변경의 경우는 id_nick 해쉬맵의 nickname 정보만 바꿔주고 log와 idx_ans에는 넣어주지 않는다.
// idx를 증가시켜주지 않았기 때문에 다음 for문을 통해서 log배열에서 Change 정보가 사라진다.
if (log[idx].equals("Change"))
continue;
idx_ans.put(idx++, id);
}
answer = new String[idx];
for (int i = 0; i < idx; i++) {
String uid = idx_ans.get(i);
String nickname = id_nick.get(uid);
if (log[i].equals("Enter"))
answer[i] = nickname + "님이 들어왔습니다.";
else if(log[i].equals("Leave"))
answer[i] = nickname + "님이 나갔습니다.";
}
return answer;
}
}
|
cs |
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Weekly Challenge] 2주차_상호평가 (python, swift) (0) | 2021.10.10 |
---|---|
[2019 KAKAO BLIND RECRUITMENT] 실패율(JAVA) (0) | 2020.09.11 |
[2020 KAKAO BLIND RECRUITMENT] 자물쇠와 열쇠 (JAVA) (2) | 2020.09.09 |
[2020 KAKAO BLIND RECRUITMENT] 괄호변환 (JAVA) (0) | 2020.09.08 |
[2020 KAKAO BLIND RECRUITMENT] 문자열 압축 (JAVA) (0) | 2020.09.08 |
댓글