developerU
[프로그래머스] level2 오픈채팅방 (java) 본문
문제링크
https://programmers.co.kr/learn/courses/30/lessons/42888
풀이 방법
1. 맵으로 [유저 아이디]와 [닉네임]을 관리
맵에 같은 아이디가 있다면 마지막에 들어온 닉네임이 최종 닉네임으로 결정
2. Queue에 아이디와 Enter, Leave 정보 저장
이 부분을 리스트로 하고 바로 get을 하면서 순서대로 answer 배열에 담아주는 것도 좋은 방법일 것 같다.
내 코드
import java.util.*;
class Solution {
public String[] solution(String[] record) {
String[] answer = {};
List<String> list = new ArrayList<>();
Map<String, String> id = new HashMap<>();
Queue<String[]> queue = new LinkedList<>();
StringTokenizer st;
for(int i=0; i<record.length; i++){
String[] temp = record[i].split(" ");
String status = null;
switch(temp[0]){
case "Enter":
status = "들어왔습니다.";
break;
case "Leave":
status = "나갔습니다.";
break;
}
if(status != null)
queue.offer(new String[]{temp[1], status});
if(temp.length > 2)
id.put(temp[1], temp[2]);
}
while(!queue.isEmpty()){
String[] res = queue.poll();
String s = id.get(res[0]) + "님이 " + res[1];
list.add(s);
}
answer = new String[list.size()];
answer = list.toArray(answer);
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] level2 두 큐 합 같게 만들기 (java) 시간초과 해결 (1) | 2022.09.03 |
---|---|
[프로그래머스] level2 단체사진 찍기 (java) (0) | 2022.06.30 |
[프로그래머스] level1 숫자 문자열과 영단어 (0) | 2022.03.24 |
[프로그래머스 Java] level2 짝지어 제거하기 (0) | 2021.04.22 |
[프로그래머스 C#] level2 JadenCase 문자열 만들기 (0) | 2021.04.20 |
Comments