https://school.programmers.co.kr/learn/courses/30/lessons/42576
HashMap을 사용하면 효율적인 코드를 만들 수 있다.
Sudo Code
1. HashMap 선언 - key : 참가자 이름, Value : 동명이인의 수
2. 참가자들을 HashMap에 넣고, 동명이인일 경우 HashMap의 value를 ++한다.
3. HashMap에서 완주자 수를 차감한다.
4. HashMap에서 value가 0이 아닌 key를 찾아 리턴한다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> map = new HashMap<>();
for(String s : participant){
map.put(s, map.getOrDefault(s, 0) +1);
}
for(String s : completion){
map.put(s, map.get(s)-1);
}
for(String s : map.keySet()){
if(map.get(s)!=0) answer = s;
}
return answer;
}
}
map.put(s, map.getOrDefault(s, 0) +1);
- key는 참여자 s
- value는
만약 s가 이미 map에 있다면 해당 s에 매핑되는 value+1
만약 s가 map에 존재하지 않는다면 default값 0 + 1
map.put(s, map.get(s)-1);
- key는 완주자 s
- value는 map에 존재하는 참여자들의 수
완주자들이 map에 들어올 때마다 해당 key에 매핑되는 value를 --;
map.keySet();
- keySet은 map의 key들을 Set 형태로 반환한다.
- map의 key들에 매핑되는 value가 0이 아니라면 (완주를 하지 못했다면) 해당 key를 리턴
* Map의 key는 중복 값을 넣어도 중복되지 않는다.
* map.get(key값) : value 리턴
* map.getOrDefault(key값, 기본값) : key값에 매핑되는 value가 있다면 해당 value 리턴, 없다면 기본값 리턴
* map.keySet() : map의 key들을 Set으로 리턴, 이것을 이용해 for each문으로 value들을 각각 구할 수 있다.
'코딩 테스트 대비' 카테고리의 다른 글
| [백준 BFS] 2573번: 빙산 (Java) (0) | 2025.12.29 |
|---|---|
| 에라토스테네스의 체 (0) | 2025.11.30 |
| [프로그래머스] 추억 점수 (Java) (0) | 2025.10.30 |
| [백준 BFS] 2206번: 벽 부수고 이동하기 (Java) (0) | 2025.10.29 |
| [백준 BFS] 7562번: 나이트의 이동 (Java) (0) | 2025.10.28 |