반응형
문제
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
반응형
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - Java] [1차] 뉴스 클러스터링 (2018 KAKAO BLIND RECRUITMENT) (0) | 2021.01.15 |
---|---|
[프로그래머스 - Java] 길 찾기 게임 (2019 KAKAO BLIND RECRUITMENT) (341) | 2021.01.12 |
[프로그래머스 - Java] 후보키 (2019 KAKAO BLIND RECRUITMENT) (1) | 2021.01.11 |
[프로그래머스 - Java] 기둥과 보 설치 (2020 KAKAO BLIND RECRUITMENT) (417) | 2021.01.11 |
[프로그래머스 - Java] 삼각 달팽이(월간 코드 챌린지 시즌1) (0) | 2020.09.22 |
댓글