문제
완주하지 못한 선수
풀이
- 해시맵으로 참여 인원을 카운팅한다.
- 다시 해시맵으로 완주 인원을 제외한다.
- 해시맵에 남았다면 완주하지 못 한 것
코드
import java.util.HashMap;
import java.util.Map;
class Solution {
public String solution(String[] participant, String[] completion) {
Map<String, Integer> participantMap = new HashMap<>();
for(String p : participant){
participantMap.put(p, participantMap.getOrDefault(p, 0) + 1);
}
for(String c : completion){
participantMap.put(c, participantMap.get(c) - 1);
}
for (Map.Entry<String, Integer> entry : participantMap.entrySet()) {
if(entry.getValue() > 0) return entry.getKey();
}
return "";
}
}
정리
- 해시맵에 값을 넣을 때 getOrDefault를 사용하면 null 체크도 같이 해준다
- 참가자 배열, 완주자 배열을 sort하고 for문을 순회하는 방식도 있는데, 해시맵으로 풀어봤다