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

728x90
반응형

(1) 내 풀이

function solution(participant, completion) {
    const hash ={}
    
    participant.forEach(name =>{
        if(!hash[name]) hash[name] = 0;
        hash[name] ++
    })
   
    completion.forEach(name =>{
        hash[name]--
    })
    
    for(const key in hash){
        if(hash[key] !== 0 ){
            return  key
        }
    }
    
}

1. Hash 객체 생성

2. 참가자를 Hash 객체에 넣는데, value는 없으면 0 있으면 +1

3. 완주자를 Hash 객체의 value -1 

4. 카운트가 0이 아닌 사람 = 완주 못한 선수의 이름

 

 

 

 

(2) 다른사람 풀이-1

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.set 메소드로 map에 새로운 객체 추가  // map.set(key,value)

 

 

(3) 다른사람 풀이-2

function solution(participant, completion) {

    participant.sort();
    completion.sort();

    for(let i in participant) {
        if(participant[i] !== completion[i]) return participant[i];
    }
}

1. 참가자와 완주자 sort해서 같지 않으면 리턴

 

 

끝.

반응형