[javascript] 완주하지 못한 선수 (프로그래머스 - 해시)

Chaedie·2022년 6월 21일
0

Javascript - PS

목록 보기
10/24
post-custom-banner

문제 링크 : 완주하지 못한 선수 - 해시

내 풀이

제 풀이는 차마 부끄러워서 올릴수가 없네요.. 😭😭😭

다른 사람 풀이 중 가장 좋았던 풀이

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 이라는 형식으로 포문에서 키,밸류를 뺄수 있다.


이 문제 하나로 정~ 말 많은것을 배웠다. 👍👍👍👍👍👍

profile
TIL Blog - Today's Intensive Learning!
post-custom-banner

0개의 댓글