프로그래머스 오픈채팅방 [Java]
문제출처
https://programmers.co.kr/learn/courses/30/lessons/42888
import java.util.*;
class Solution {
public String[] solution(String[] record) {
List<String> answer_list = new ArrayList<>();
HashMap<String, String> user = new HashMap<>();
for(String r : record){
String[] tmp = r.split(" ");
switch(tmp[0]){
case "Enter":
user.put(tmp[1], tmp[2]);
break;
case "Change":
user.put(tmp[1], tmp[2]);
break;
}
}
for(String r : record){
String[] tmp = r.split(" ");
switch(tmp[0]){
case "Enter":
answer_list.add(user.get(tmp[1]) + "님이 들어왔습니다.");
break;
case "Leave":
answer_list.add(user.get(tmp[1]) + "님이 나갔습니다.");
break;
}
}
String[] answer = answer_list.toArray(String[] :: new);
return answer;
}
}
hashmap을 이용해서 풀었다.
카카오 기술 블로그에 있는 풀이방법은
enter, leave인 경우 유저 아이디와 함께 출력될 메세지 종류 저장
enter, change인 경우 아이디를 키로 닉네임을 값으로 저장
처음 기록해둔 메세지를 순회하며 두번째에 저장해둔 닉네임을 참조하여 완성.
내가 푼 것과 흐름은 비슷하다.
나는 그냥 처음에는 enter와 change인 경우만 찾으며 아이디와 닉네임을 먼저 저장했다.
후에 enter와 leave를 돌며 바로 메세지를 만들어 list에 추가했다.
더 좋고 빠른 방법이 있지 않을까 코드가 지저분하게 느껴지지만 우선 빠른시간내에 풀었으니 만족...
'문제풀이 > 코딩테스트' 카테고리의 다른 글
프로그래머스 기능개발 [Java] (0) | 2022.05.06 |
---|---|
프로그래머스 멀쩡한 사각형 [Java] (0) | 2022.05.05 |
프로그래머스 124 나라의 숫자 [Java] (0) | 2022.05.05 |
프로그래머스 소수 찾기 [Java] (0) | 2022.03.31 |
프로그래머스 [1차] 다트 게임 [Java] (0) | 2022.03.17 |