알고리즘
프로그래머스 - 완주하지 못한 선수
계양 꿀주먹
2024. 5. 2. 12:08
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> map = new HashMap<>();
for (String player : participant) map.put(player, map.getOrDefault(player, 0) + 1);
for(String player : completion) {
if(map.get(player) == 1) map.remove(player);
else {
int n = map.get(player);
map.put(player, n - 1);
}
}
for(String player : map.keySet()) answer = player;
return answer;
}
}
HashMap을 사용해 푸는 문제였습니다.
참가한 선수 중 동명이인이 있을 수 있으므로, 이름을 key, 이름을 가진 사람 수를 value로 하였고 완주자 목록에서 map을 순회할 때 한 명만 남았다면 삭제 후 남아있는 Key를 조회해 값을 찾았습니다.
글을 작성하다 굳이 시간을 소모해 삭제를 할 필요가 없을 것 같아 코드를 수정하고 다듬어 효율성 테스트를 진행했습니다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> map = new HashMap<>();
for (String player : participant) map.put(player, map.getOrDefault(player, 0) + 1);
for(String player : completion) map.put(player, map.get(player) - 1);
for(String player : map.keySet()) {
if(map.get(player) == 1) {
answer = player;
break;
}
}
return answer;
}
}