반응형
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42888
풀이
package seohae.algorithm.level2;
import java.util.*;
/**
* https://programmers.co.kr/learn/courses/30/lessons/42888
*/
public class Lesson_050_42888 {
public static void main(String[] args) {
Lesson_050_42888 lesson = new Lesson_050_42888();
String[] a = new String[]{"Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"};
System.out.println(Arrays.toString(lesson.solution(a)));
}
public String[] solution(String[] record) {
/* key: userId, value: 닉네임을 셋팅할 Map 선언 */
Map<String, String> member = new HashMap<>();
/* 최종적으로 출력을 위해 담을 queue */
Queue<String> queue = new LinkedList<>();
/* 파라미터 record 반복문 실행 */
for (String target : record) {
String[] targetArr = target.split(" ");
String startWord = targetArr[0];
/* 키워드에 따른 분기 처리 */
if ("Enter".equals(startWord)) {
member.put(targetArr[1], targetArr[2]);
queue.offer(target);
} else if ("Leave".equals(startWord)) {
queue.offer(target);
} else if ("Change".equals(startWord)) {
/* 같은 key 일 경우 value change */
member.put(targetArr[1], targetArr[2]);
}
}
String[] answer = new String[queue.size()];
int index = 0;
/* queue 만큼 반복문 */
while (!queue.isEmpty()) {
String target = queue.poll();
String[] targetArr = target.split(" ");
String startWord = targetArr[0];
/* 출력 */
if ("Enter".equals(startWord)) {
answer[index] = member.get(targetArr[1]) + "님이 들어왔습니다.";
} else if ("Leave".equals(startWord)) {
answer[index] = member.get(targetArr[1]) + "님이 나갔습니다.";
}
index++;
}
return answer;
}
}
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[Baekjoon 1182번] 부분수열의 합 문제 (with 자바) (0) | 2021.09.26 |
---|---|
[프로그래머스] Level2 _1829번: 카카오 프렌즈 컬러링북 (JAVA) (0) | 2021.09.25 |
[프로그래머스] Level2 _12973번: 짝지어 제거하기 (JAVA) (0) | 2021.09.23 |
[프로그래머스] Level2 _42626번: 더 맵게 (JAVA) (0) | 2021.09.22 |
[Baekjoon 11047번] 동전 0 문제 (with 자바) (0) | 2021.09.22 |