[카카오/자바] 오픈채팅방
https://programmers.co.kr/learn/courses/30/lessons/42888
접근 방식
- 채팅방에 있는 유저들의 아이디(Key)와 닉네임(Value)을 hashMap에 저장
- 닉네임 변경을 제외한 유저들의 행동 로그를 Queue에 저장
들어오거나 닉네임을 바꿀 때, hashMap에 저장
hashMap에 Change를 제외한, 행동로그에 따른 메세지를 저장
- key "Enter" - value "들어왔습니다."
- key "Leave" - value "나갔습니다."
"Change"를 제외한, 행동 로그를 UserLog 객체 타입으로 Queue로 저장
- UserLog(id, action)
1~3까지의 기록 처리가 끝나면, Queue에 저장된 로그를 문자열 배열 형태로 return
소스 구현
ximport java.util.HashMap;import java.util.LinkedList;import java.util.Queue;class Solution { public class UserLog{ String id; String action; public UserLog(String id, String action) { this.id = id; this.action = action; } } public String[] solution(String[] record) { String[] answer = null; StringBuffer log = new StringBuffer(); Queue<UserLog> userLogQue = new LinkedList<>(); HashMap<String, String> map = new HashMap<String, String>(); map.put("Enter","들어왔습니다."); map.put("Leave","나갔습니다."); for(String r : record) { String[] user = r.split(" "); if(user.length==3) { map.put(user[1], user[2]); } if(!(user[0].equals("Change"))){ userLogQue.add(new UserLog(user[1], user[0])); } } answer = new String[userLogQue.size()]; int i =0; while(!userLogQue.isEmpty()) { log.setLength(0); UserLog ul = userLogQue.poll(); log.append(map.get(ul.id)); log.append("님이 "); log.append(map.get(ul.action)); answer[i++] = log.toString(); } return answer; }}
효율성 테스트
xxxxxxxxxx테스트 1 〉 통과 (2.61ms, 50.2MB)테스트 2 〉 통과 (2.22ms, 52.2MB)테스트 3 〉 통과 (2.48ms, 51.9MB)테스트 4 〉 통과 (2.92ms, 52.8MB)테스트 5 〉 통과 (11.42ms, 53.5MB)테스트 6 〉 통과 (11.40ms, 53.1MB)테스트 7 〉 통과 (11.49ms, 53.3MB)테스트 8 〉 통과 (11.79ms, 53.2MB)테스트 9 〉 통과 (10.79ms, 54.8MB)테스트 10 〉 통과 (10.43ms, 55MB)테스트 11 〉 통과 (7.23ms, 53.1MB)테스트 12 〉 통과 (6.27ms, 53MB)테스트 13 〉 통과 (10.42ms, 55.3MB)테스트 14 〉 통과 (15.91ms, 53.3MB)테스트 15 〉 통과 (2.26ms, 52.4MB)테스트 16 〉 통과 (2.59ms, 51.9MB)테스트 17 〉 통과 (3.27ms, 52.3MB)테스트 18 〉 통과 (3.38ms, 52.9MB)테스트 19 〉 통과 (14.52ms, 55.4MB)테스트 20 〉 통과 (9.79ms, 52.6MB)테스트 21 〉 통과 (8.27ms, 55MB)테스트 22 〉 통과 (8.95ms, 53.6MB)테스트 23 〉 통과 (14.17ms, 54.8MB)테스트 24 〉 통과 (18.02ms, 55MB)테스트 25 〉 통과 (214.38ms, 157MB)테스트 26 〉 통과 (279.81ms, 158MB)테스트 27 〉 통과 (335.39ms, 167MB)테스트 28 〉 통과 (297.52ms, 164MB)테스트 29 〉 통과 (227.35ms, 164MB)테스트 30 〉 통과 (248.47ms, 158MB)테스트 31 〉 통과 (212.65ms, 150MB)테스트 32 〉 통과 (213.35ms, 146MB)
'study > coding test' 카테고리의 다른 글
| [카카오/자바] 3차 압축 (0) | 2020.05.12 |
|---|---|
| [카카오/자바] 자물쇠와 열쇠 (0) | 2020.05.12 |
| [백준/자바] 11052번 카드 구매하기 (0) | 2020.05.12 |
| 자바 메모리구조에서 LinkedList 소스 실행 과정 (0) | 2020.02.24 |
| [프로그래머스/자바]K번째 수 (0) | 2020.02.24 |