해시관련 문제이다.
결국 participant에 하나 더 있는 참여자를 찾아내야 하는데, 문제는 동명이인이 있을 시다.
이름을 가지고 중복제거 해버리면 동명이인은 함께 사라지기 때문에 주의가 필요하다.
내 코드
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>();
//참여자 이름이 map에 없을경우 value = 1 로 삽입
for(String name : participant)
map.put(name, map.getOrDefault(name, 0) + 1);
//완주자 value 1씩 감소
for(String name : completion)
map.put(name, map.get(name) - 1);
//value = 1인 참여자가 완주하지 못한 참여자
for(String key : map.keySet())
{
if(map.get(key) > 0){
answer = key;
break;
}
}
return answer;
}
}
정렬을 이용한 방법도 있었지만 해시관련 문제라 해시함수를 사용해 풀려고 노력했다.
결국.. 풀지 못해서 다른 사람 코드를 참고했는데 내가 헤맸던건 Hash API를 잘 알지 못해서였다.
해시함수는 따로 한번 더 정리하기로...
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Java] LV.1 정수 제곱근 판별 (0) | 2022.09.14 |
---|---|
[프로그래머스/Java] LV.1 자릿수 더하기 (0) | 2022.09.13 |
[프로그래머스/Java] LV.1 나머지가 1이 되는 수 찾기 (0) | 2022.09.13 |
[프로그래머스/Java] LV.1 폰켓몬 (0) | 2022.08.12 |
[프로그래머스/Java] LV.1 소수 만들기 (0) | 2022.08.12 |