[프로그래머스 | 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해서 같지 않으면 리턴

 

 

끝.

반응형