View
📚 문제
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
📝 문제 해결
HashMap<String, Boolean>으로 선언해주고 완주 시 true로 변경했더니 동명이인을 구분하지 못함.
값 타입을 Integer로 지정해주고 HashMap에 이미 동일한 이름이 입력되었을 때는 value+1을 해주었다.
💻 코드
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1);
for (String player : completion) hm.put(player, hm.get(player) - 1);
for (String key : hm.keySet()) {
if (hm.get(key) != 0){
answer = key;
}
}
return answer;
}
}
💡 HashMap은 중복을 허용하지 않기 때문에 동일한 키 값에 대해 덮어쓰기를 해버린다.
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[해시] 프로그래머스 42579번 베스트앨범(Java) (0) | 2023.02.13 |
---|---|
[해시] 프로그래머스 42578번 위장(Java) (0) | 2023.02.10 |
[해시] 프로그래머스 42577번 전화번호 목록(Java) (0) | 2023.02.09 |
reply