문제


풀이 과정
- 참가 선수가 완주자 명단에 있는지 확인해야하므로 HashSet과 HashMap을 고려
- HashSet의 경우 참가 선수를 Value로 담으면 되지만 제한사항의
참가자 중에는 동명이인이 있을 수 있습니다.라고 명시되어 있기에 HashSet으로 한다면 동명이인에 대한 체크가 불가능
- HashMap의 경우 참가 선수를 Key로 담고 제한사항의
참가자 중에는 동명이인이 있을 수 있습니다.를 고려해 Value에 인원 수를 카운트한 정수를 담으면 동명이인에 대한 체크가 가능
- 완주자 명단의 선수를 Key로 HashMap의 값을 추출해 1씩 빼기
- HashMap에서 Value가 0이 아닌 선수가 완주하지 못한 선수로 판단해 반환.
작성 코드
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> playerMap = new HashMap<>();
for(String player : participant){
playerMap.put(player, playerMap.getOrDefault(player, 0)+1);
}
for(String player : completion){
playerMap.put(player, playerMap.get(player)-1);
}
return playerMap.entrySet()
.stream()
.filter(entry -> entry.getValue() != 0)
.findFirst()
.orElseThrow()
.getKey();
}
}
실행 결과
