문제
https://school.programmers.co.kr/learn/courses/30/lessons/42576
풀이 과정
해시맵을 활용하면 간단히 풀 수 있는 문제였다. 처음엔 value를 Boolean 값으로 주려 했으나, 이름이 중복될 수 있다는 것을 깨닫고 횟수로 변경하였다.
- 해시맵에 참가자들의 이름을 key로, 이름 조회 횟수를 value로 넣어준다.
(이름이 중복이 아닌 경우는 value가 1, 중복인 경우는 n이 됨) - 해시맵에서 완주한 사람들의 value를 -1 해준다.
- 해시맵에서 value가 0 이상인 사람을 return 해준다. => 완주하지 못한 선수
코드
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> hashMap = new HashMap<>(participant.length);
for (String p : participant) {
hashMap.put(p, hashMap.getOrDefault(p, 0) + 1);
}
for (String c : completion) {
int cnt = hashMap.get(c);
hashMap.put(c, cnt - 1);
}
for (String p : hashMap.keySet()) {
int cnt = hashMap.get(p);
if (cnt > 0) {
answer = p;
break;
}
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[Python] 아이템 줍기 (0) | 2022.10.02 |
---|---|
[Java] 다리 위를 지나는 트럭 (0) | 2022.10.01 |
[Java] 올바른 괄호 (0) | 2022.10.01 |
[Python] H-Index (0) | 2022.09.22 |
[Python] 후보키 (0) | 2021.10.28 |