
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
// 해시맵 생성
HashMap<String, Integer> map = new HashMap<>();
// 참여자 명단 해시맵에 넣기
for (String name : participant) {
// 이름이 이미 해시맵에 있으면 값을 증가시키고, 없으면 1로 초기화
map.put(name, map.getOrDefault(name, 0) + 1);
}
// 완주자 명단을 활용하여 해시맵에서 값을 1 감소
for (String name : completion) {
map.put(name, map.get(name) - 1);
}
// 해시맵에서 값이 1인 키(완주하지 못한 참가자) 찾기
String answer = "";
for (String key : map.keySet()) {
if (map.get(key) == 1) {
answer = key;
break;
}
}
return answer;
}
}
getOrDefault 메서드는 주어진 키에 해당하는 값을 반환
getOrDefault(키, 키가 없을 때 반환할 기본값)
-> 이렇게 작성해도 값이 있으면 원래 키에 매칭되는 값이 나옴(없는 경우에만 기본값 반환)
map.getOrDefault(name, 0) -> map에서 name(키)에 맞는 값 반환, 없을 경우 0 반환
map.getOrDefault(name, 0) + 1 -> 키에 맞는 값이나 0에 +1한 값
(name, map.getOrDefault(name, 0) + 1); -> 키, getOrDefault로 얻은 값
map.put(name, map.getOrDefault(name, 0) + 1); -> map에 저장
https://school.programmers.co.kr/learn/courses/30/lessons/42576