728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

-틀린 코드
첫 단어랑 아이디도 Map으로 저장함 > Map은 같은 key가 여러 번 나오면 덮어쓰기 발생, keySet()은 순서 보장해주지X
=> 첫 단어랑 아이디는 순서대로 List에 저장하기!
import java.util.*;
class Solution {
public String[] solution(String[] record) {
Map<String, String> user = new HashMap<>(); // 아이디, 닉네임 저장
Map<String, String> messages = new HashMap<>(); // 첫 단어, 아이디 저장
// 최종 닉네임 구하기 : Enter, Change인 경우에만
for(String r : record){
String[] s = r.split(" ");
String m = s[0];
String id = s[1];
// 닉네임 저장하기
if(m.equals("Enter") || m.equals("Change")){
user.put(id, s[2]);
}
// 메시지 저장하기
if(!m.equals("Change")){
messages.put(m, id);
}
}
// 메시지 출력하기
String[] answer = new String[messages.size()];
int i=0;
for(String message : messages.keySet()){
String uid = messages.get(message);
if(message.equals("Enter")){
answer[i] = user.get(uid) + "님이 들어왔습니다.";
}
else if(message.equals("Leave")){
answer[i] = user.get(uid) + "님이 나갔습니다.";
}
i++;
}
return answer;
}
}
-정답 코드
import java.util.*;
class Solution {
public String[] solution(String[] record) {
Map<String, String> user = new HashMap<>(); // 아이디, 닉네임 저장
List<String[]> messages = new ArrayList<>(); // 첫 단어, 아이디 저장
// 최종 닉네임 구하기 : Enter, Change인 경우에만
for(String r : record){
String[] s = r.split(" ");
String m = s[0];
String id = s[1];
// 닉네임 저장하기
if(m.equals("Enter") || m.equals("Change")){
user.put(id, s[2]);
}
// 메시지 저장하기
if(!m.equals("Change")){
messages.add(new String[]{m, id});
}
}
// 메시지 출력하기
String[] answer = new String[messages.size()];
int i =0;
for(String[] message : messages){
String c = message[0];
String uid = message[1];
if(c.equals("Enter")){
answer[i] = user.get(uid) + "님이 들어왔습니다.";
}
else if(c.equals("Leave")){
answer[i] = user.get(uid) + "님이 나갔습니다.";
}
i++;
}
return answer;
}
}'Algorithm > Programmers' 카테고리의 다른 글
| 💚[Lv.2] 뒤에 있는 큰 수 찾기 (0) | 2026.02.04 |
|---|---|
| [Lv.2] 구명보트 : Java (0) | 2026.02.03 |
| [Lv.2] 영어 끝말잇기 : Java (0) | 2026.02.03 |
| [Lv.2] 귤 고르기 : Java / HashMap 함수 (0) | 2026.02.02 |
| 💚[Lv.2] 짝지어 제거하기 : Java (0) | 2026.01.30 |