- 오늘의 학습 키워드 : HashMap, getOrDefault(), entrySet(), entry.getValue(), entry.getKey()
문제분석
문제 분석
이 문제는 마라톤 참가자 목록과 완주자 목록을 비교하여 완주하지 못한 한 명의 선수를 찾는 문제입니다. 해시맵을 활용하여 효율적으로 해결할 수 있습니다.
핵심 포인트
- 참가자 중 한 명만 완주하지 못했습니다
- 동명이인이 있을 수 있습니다
- 효율적인 탐색을 위해 HashMap을 사용합니다
해결 방법
- HashMap을 생성하여 참가자 명단을 저장합니다
- 참가자의 이름을 키로, 등장 횟수를 값으로 저장합니다
- 완주자 명단을 순회하면서 해당 이름의 카운트를 감소시킵니다
- 최종적으로 값이 1인 참가자가 완주하지 못한 선수입니다
- 오늘의 회고
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
중복되는 이름이 있는 경우를 해결해야 했음
map의 경우 중복되는 키를 저장할 시 제알 나중에 저장한 값이 저장됨
- 어떻게 해결했는지
getOrDefault()를 사용해서 중복될 시 값을 +1로 해결 하였음
문제 풀이
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Map<String, Integer> map = new HashMap<>();
for(int i =0 ; i < participant.length; i++){
map.put(participant[i], map.getOrDefault(participant[i], 0) +1);
}
for(int i = 0; i < completion.length; i++){
map.put(completion[i], map.getOrDefault(completion[i], 0) -1);
}
for(Map.Entry<String, Integer> entry : map.entrySet()){
if(entry.getValue() == 1 ) return entry.getKey();
}
return "";
}
}