-
프로그래머스 - 완주하지 못한 선수알고리즘 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; } }
'알고리즘' 카테고리의 다른 글
프로그래머스 - 둘만의 암호 (0) 2024.05.07 프로그래머스 - 숫자 짝꿍 (1) 2024.05.06 프로그래머스 - 로또의 최고 순위와 최저 순위 (0) 2024.05.02 프로그래머스 - 다트 게임 (1) 2024.05.01 프로그래머스 - 실패율 (0) 2024.04.29