- 매개변수로 주어진 두 배열을 오름차순 정렬한다.
- completion 길이만큼 반복하면서 두 배열의 같은 인덱스 값이 같은지 비교한다.
2-1. 값이 다르면 participant[i] 값을 반환한다.- 반복문이 종료하면 participant[-1] 값을 반환한다.
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];
}
}
}
✔️ 해시 사용
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 감소시키면서 결국 한 사람만 남게 한다.