
👉 Approach
사용된 변수에 대한 설명
- map : 선수의 이름과 중복 횟수를 카운팅
- partPlayer : 참여자 이름
- comPlayer : 완주자 이름
주요 로직
- 동명이인이 2이상이 될 수 있다는 부분을 고려하며 이름과 중복 횟수를 각각 key, value로 지정해 HashMap으로 횟수를 관리합니다.
- 첫번째 for문으로 참여자를 담으며 이미 존재하는 참여자는 getOrDefault를 이용해 기존 value에 1++합니다.
- 두번째 for문에서는 횟수를 차감하는데 이 때는 담아놓은 참여자와 꺼낸 완주자를 key로 비교합니다.
✔️ Code
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
HashMap<String, Integer> map = new HashMap<>();
for(String partPlayer: participant){
map.put(partPlayer,map.getOrDefault(partPlayer,0) +1);
}
for(String comPlayer:completion){
map.put(comPlayer,map.get(comPlayer) -1);
}
for(String player: participant){
if(map.get(player) > 0) return player;
}
return null;
}
}