ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 오픈채팅방
SZCODE
2020. 8. 17. 23:44
https://programmers.co.kr/learn/courses/30/lessons/42888
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
문제풀이 : 채팅방 메시지는 순서대로 출력되게 하면서, 닉네임은 최종 변경된 닉네임으로 출력되게 합니다. HashMap을 이용하여 uid는 key로 닉네임은 value로 줍니다. record 배열을 띄어쓰기로 구분하여 잘라준 후 HashMap에 저장해 줍니다. 같은 uid(key)가 있을 경우 해쉬맵에는 최종 변경된 닉네임으로 저장됩니다. String은 equals로 문자열이 같은지 비교할 때 사용한다. 변수를 따로 주어 사용해서 가독성을 좋게하자. |
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
class Solution {
public static String[] solution(String[] record) {
ArrayList<String> list = new ArrayList();
HashMap<String, String> hm = new HashMap();
String message,uid,nickname;
for (int i = 0; i < record.length; i++) {
message = record[i].split(" ")[0];
uid = record[i].split(" ")[1];
if(message.equals("Enter") || message.equals("Change")) {
nickname = record[i].split(" ")[2];
hm.put(uid,nickname);
}
for (int i = 0; i < record.length; i++) {
message = record[i].split(" ")[0];
uid = record[i].split(" ")[1];
if (message.equals("Enter")) {
if (hm.containsKey(uid)) {
list.add(hm.get(uid) + "님이 들어왔습니다.");
}
} else if (message.equals("Leave")) {
if (hm.containsKey(uid)) {
list.add(hm.get(uid) + "님이 나갔습니다.");
}
}
}
String[] answer = new String[list.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = list.get(i);
}
return answer;
}
}