알고리즘 문제/프로그래머스
[프로그래머스 - Java] 오픈 채팅방 (2019 KAKAO BLIND RECRUITMENT)
건복치
2021. 1. 11. 07:20
반응형
문제
programmers.co.kr/learn/courses/30/lessons/42888
아이디 값을 key로 HashMap을 사용해 아이디와 닉네임을 관리한다.
나는 LinkedList로 했는데 ArrayList든 뭐든 인덱스 없이 저장할 수 있는 자료구조를 이용해
들어오고, 나오고를 저장할 result를 만들어준다.
- Enter라면 아이디와 닉네임을 저장하고 result에 add
- Change라면 단순히 닉네임만 업데이트
- Exit이라면 result에만 add
record의 모든 데이터를 확인한 후에는
result의 size만큼 돌며 누가 들어오고 나갔는지 결과를 출력하면 완성이다!
전체 코드
import java.util.*;
public class Solution{
public String[] solution(String[] record) {
Map<String, String> idMap = new HashMap<>();
List<String[]> result = new LinkedList<>();
for (String records : record) {
String[] keyWord = records.split(" ");
if (keyWord[0].equals("Enter")) { // 들어오면 id 맵에 저장후, result에 추가
idMap.put(keyWord[1], keyWord[2]);
result.add(keyWord);
} else if (keyWord[0].equals("Change")) { // 닉네임 업데이트만
idMap.put(keyWord[1], keyWord[2]);
} else { // 나가면 result에만 추가
result.add(keyWord);
}
}
String[] answer = new String[result.size()];
int idx = 0;
for (String[] keyWords : result){
String nickName = idMap.get(keyWords[1]);
if (keyWords[0].equals("Enter")) {
answer[idx++] = nickName + "님이 들어왔습니다.";
} else {
answer[idx++] = nickName + "님이 나갔습니다.";
}
}
return answer;
}
}
GITHUB
github.com/KwonMinha/Programmers/blob/master/2019_Kakao_Blind_Recruitment/src/OpenChatting.java
반응형