728x90
오픈채팅방
https://school.programmers.co.kr/learn/courses/30/lessons/42888



풀이
처음 코드
`record`를 2번 돌면서 닉네임 갱신, 결과 생성
- 1차 순회: `record`
- `userId` -> 최종 닉네임
- `Map<String, String> HM = new HashMap<>()`
- 결과 개수 계산(`n`)
- `userId` -> 최종 닉네임
- 2차 순회: `record`
- `Enter` / `Leave`에 대해 결과 문자열 생성
개선한 코드
상태로 닉네임 관리, `Enter` / `Leave` 로그로 분리해 한 번에 출력
- 1차 순회: `record`
- `userId` -> 최종 닉네임
- `Map<String, String> HM = new HashMap<>()`
- 출력 대상 로그: `userId`, `word`
- `List<String[]> logs = new ArrayList<>()`
- `userId` -> 최종 닉네임
- 2차 순회: `logs`
- `Enter` / `Leave`에 대해 결과 문자열 생성
코드
처음 코드
import java.util.*;
class Solution {
public String[] solution(String[] record) {
int n = 0;
// userId, nickname
Map<String, String> HM = new HashMap<>();
for (String r : record) {
String[] str = r.split(" ");
String word = str[0];
if (word.equals("Enter")) {
HM.put(str[1], str[2]);
n++;
} else if (word.equals("Change")) {
HM.replace(str[1], str[2]);
} else n++;
}
String[] result = new String[n];
int idx = 0;
for (String r : record) {
String[] str = r.split(" ");
String word = str[0];
String nickname = HM.get(str[1]);
if (word.equals("Enter")) {
result[idx++] = nickname + "님이 들어왔습니다.";
} else if (word.equals("Leave")) {
result[idx++] = nickname + "님이 나갔습니다.";
}
}
return result;
}
}
개선한 코드
import java.util.*;
class Solution {
public String[] solution(String[] record) {
// userId, nickname
Map<String, String> HM = new HashMap<>();
// userId, word
List<String[]> logs = new ArrayList<>();
for (String r : record) {
String[] str = r.split(" ");
String word = str[0];
if (word.equals("Enter")) {
HM.put(str[1], str[2]);
logs.add(new String[]{str[1], "Enter"});
} else if (word.equals("Leave")) {
logs.add(new String[]{str[1], "Leave"});
} else HM.put(str[1], str[2]);
}
String[] result = new String[logs.size()];
int idx = 0;
for (String[] l : logs) {
String word = l[1];
String nickname = HM.get(l[0]);
if (word.equals("Enter")) {
result[idx++] = nickname + "님이 들어왔습니다.";
} else {
result[idx++] = nickname + "님이 나갔습니다.";
}
}
return result;
}
}728x90
반응형
'✏️ > Programmers' 카테고리의 다른 글
| [프로그래머스/Lv.1] PCCP - 동영상 재생기 (Java) (0) | 2026.02.03 |
|---|---|
| [프로그래머스/Lv.2] 메뉴 리뉴얼 (Java) (0) | 2026.02.01 |
| [프로그래머스/Lv.1] 신고 결과 받기 (Java) (0) | 2026.02.01 |
| [프로그래머스/알고리즘 고득점 Kit] 탐욕법(Greedy) - 조이스틱 (Java) (0) | 2026.01.28 |
| [프로그래머스/알고리즘 고득점 Kit] 탐욕법(Greedy) - 큰 수 만들기 (Java) (0) | 2026.01.28 |