문제 링크 : 완주하지 못한 선수 - 해시
제 풀이는 차마 부끄러워서 올릴수가 없네요.. 😭😭😭
function solution(participant, completion) {
const map = new Map();
for(let i = 0; i < participant.length; i++) {
let a = participant[i],
b = completion[i];
map.set(a, (map.get(a) || 0) + 1);
map.set(b, (map.get(b) || 0) - 1);
}
for(let [k, v] of map) {
if(v > 0) return k;
}
return 'nothing';
}
1) map을 사용한다.
2)
map.set(a, (map.get(a) || 0) + 1);
map.set(b, (map.get(b) || 0) - 1);
참가 명단에 있으면 밸류값에 + 1 을 하고,
결승 명단에 있으면 밸류값에 - 1 을 한다.
3) '||'을 이용해서 디폴트값 셋팅 가능하다.
(map.get(a) || 0)
(밸류값 || 0) 이라는 식으로 default 값을 0으로 셋팅할수 있다. (Java에서는 putIfAbsent(), getOrDefault() 메서드가 있었는데, JS에는 왜없냐 ㅠ 했는데 간단하게 구현 가능하다.)
4)
for(let [k, v] of map) {
if(v > 0) return k;
}
[k, v] of map 이라는 형식으로 포문에서 키,밸류를 뺄수 있다.
이 문제 하나로 정~ 말 많은것을 배웠다. 👍👍👍👍👍👍