참고 : https://houcouonchi.tistory.com/30
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 찾는 문제
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Map<String, Integer> map = new HashMap<>();
// 모든 참가자를 map에 추가
for (String p : participant) {
map.put(p, map.getOrDefault(p, 0) + 1);
}
// 완주자를 map에서 감소
for (String c : completion) {
map.put(c, map.get(c) - 1);
}
// 완주하지 못한 참가자 찾기
for (String key : map.keySet()) {
if (map.get(key) > 0) {
return key; // 완주하지 못한 참가자 반환
}
}
return ""; // 완주하지 못한 참가자가 없을 경우 빈 문자열 반환
}
}
1. HashMap<String, Integer> 형식 사용
처음에는 <String, Boolean> 형식으로 데이터를 저장했으나, 이 경우 동명이인에 대한 처리를 놓치게 된다.
따라서 동명이인이 있을 수 있는 상황을 고려하여 <String, Integer> 형식으로 데이터를 저장한다.