문제
https://programmers.co.kr/learn/courses/30/lessons/42576
오랜만에 공부 시작할 겸 가벼운 문제 풀어봄
주의할 점은 완주한 사람(completion)을 기준으로 해시를 만들고 참여한 사람(participant)을찾는 방식이 아니라,
참여한 사람을 기준으로 해시를 만들고 완주한 사람을 찾아야 한다는 것.
그리고 이름이 중복되는 사람이 여러 사람일 수 있으므로 각 사람의 이름을 count 한 후 완주한 사람을 순회할 때 1씩 빼면서 찾아야 한다.
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
Map<String, Integer> participantPerson = new ConcurrentHashMap<>();
for(String parti : participant) {
if (!participantPerson.containsKey(parti)) {
participantPerson.put(parti, 1);
} else {
participantPerson.put(parti, participantPerson.get(parti) + 1);
}
}
for(String complete : completion) {
Integer nameCount = participantPerson.get(complete);
nameCount--;
if (nameCount == 0) {
participantPerson.remove(complete);
} else {
participantPerson.put(complete, nameCount);
}
}
String remains = (String) participantPerson.keySet().toArray()[0];
return remains;
}
}
'Algorithms' 카테고리의 다른 글
[Codility] PermMissingElem (0) | 2022.02.28 |
---|---|
[Codility] OddOccurrencesInArray (0) | 2022.02.26 |
[Codility] CyclicRotation (0) | 2022.02.24 |
[Codility] BinaryGap (0) | 2022.02.22 |
[프로그래머스] 모의고사 (0) | 2022.02.20 |