💡Problem Solving/Programmers
[프로그래머스] 오픈채팅방 (Java)
gom20
2021. 10. 22. 23:35
#문제
https://programmers.co.kr/learn/courses/30/lessons/42888
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
#풀이
id, name 쌍을 가지는 HashMap을 이용하였다.
record를 순회하면서 id, name 쌍을 만들고 요청이 있을 경우 name을 업데이트 한다.
name은 변경될 수 있으므로 name대신 id를 넣어서 문자열을 저장해둔다.
순회가 끝난 후 문자열 내 id를 name으로 변경한다.
#소스코드
import java.util.*;
class Solution {
public String[] solution(String[] record) {
String[] answer = {};
HashMap<String, String> users = new HashMap<String, String>();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < record.length; i++){
String s = record[i];
String[] arr = s.split(" ");
switch(arr[0]){
case "Enter":
sb.append(arr[1]).append("님이 들어왔습니다.-");
users.put(arr[1], arr[2]);
break;
case "Leave":
sb.append(arr[1]).append("님이 나갔습니다.-");
break;
case "Change":
users.put(arr[1], arr[2]);
break;
}
}
String str = sb.toString();
String[] result = str.split("-");
for(int i = 0; i < result.length; i++){
String key = result[i].substring(0, result[i].indexOf("님"));
result[i] = result[i].replace(key, users.get(key));
}
return result;
}
}