728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42888
풀이 코드
import java.util.*;
public class Solution {
static class Message {
String status;
String id;
public Message(String status, String id) {
this.status = status;
this.id = id;
}
}
public String[] solution(String[] record) {
//리스트에 메시지의 종류(Enter 또는 Leave)와 id 값을 저장한다.
List<Message> messages = new ArrayList<>();
//맵에 아이디와 그에 맞는 닉네임을 저장한다.
Map<String, String> map = new HashMap(); //key: 아이디, value: 닉네임
for(String s : record) {
StringTokenizer st = new StringTokenizer(s);
String status = st.nextToken();
String id = st.nextToken();
//채팅방에 입장하거나 닉네임을 변경하면 닉네임을 갱신한다.
if(!status.equals("Leave")) {
String nickname = st.nextToken();
map.put(id, nickname);
}
//채팅방에 입장하거나 떠나는 경우 메시지의 종류와 아이디를 추가한다.
if(!status.equals("Change")) {
messages.add(new Message(status, id));
}
}
//리스트에 저장해놓은 메시지 종류(Enter or Leave)와 아이디, 맵에 저장해놓은 아이디와 닉네임을 매칭시켜서 최종 메시지를 생성한다.
String[] answer = new String[messages.size()];
for(int i = 0 ; i < messages.size(); i++) {
String temp = map.get(messages.get(i).id) + "님이 ";
if(messages.get(i).status.equals("Enter")) {
temp += "들어왔습니다.";
} else {
temp += "나갔습니다.";
}
answer[i] = temp;
}
return answer;
}
}
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 튜플 - 자바(Java), 2019 카카오 개발자 겨울 인턴십 (0) | 2021.10.22 |
---|---|
[프로그래머스] 행렬 테두리 회전하기 - 자바(Java), 구현, 2021 Dev-Matching: 웹 백엔드(상반기) (0) | 2021.10.21 |
[2020 KAKAO BLIND RECRUITMENT] 문자열 압축 - 자바(Java) (0) | 2021.10.15 |
[프로그래머스] 단체사진 찍기(2017 카카오 코드 본선) - 자바, DFS(깊이 우선 탐색) (0) | 2021.07.22 |
[프로그래머스] 소수 찾기 - JAVA, DFS(깊이 우선 탐색) (0) | 2021.07.16 |
댓글