[프로그래머스] 완주하지 못한 선수 Javascript

김아현·2022년 4월 22일
0

문제 보기

🔒 문제

🔐 해결 과정

  1. 매개변수로 주어진 두 배열을 오름차순 정렬한다.
  2. completion 길이만큼 반복하면서 두 배열의 같은 인덱스 값이 같은지 비교한다.
    2-1. 값이 다르면 participant[i] 값을 반환한다.
  3. 반복문이 종료하면 participant[-1] 값을 반환한다.

🔓 풀이 (10m)

2022.04.22

function solution(participant, completion) {
    let sort_p = participant.sort();
    let sort_c = completion.sort();
    
    for(let i=0; i<sort_p.length; i++){
        if(sort_p[i] != sort_c[i]){
            return sort_p[i];
        }
    }
}

🔁 feedback

+ 다른 사람의 풀이

✔️ 해시 사용

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;
    }
}

자바스크립트의 해시인 Map()을 이용한다. map은 참가자 이름을 키로, 동명이인의 수를 값으로 한다. 참가자는 map에서 해당이름의 값을 1 증가시키고, 완주자는 1 감소시키면서 결국 한 사람만 남게 한다.

profile
Want to be backend developer

0개의 댓글