미리 알면 좋은 개념
Hash(해시) - 해시 테이블을 사용하면 자료를 쉽고 빠르게 저장할 수 있고 키-값 쌍을 기반으로 자료를 얻을 수 있다. 자바스크립트 객체는 해시 테이블과 같은 방식으로 키(속성)와 해당 키의 연관된 값을 정의하는 방식으로 동작한다.
첫 번째 풀이
function solution(participant, completion) {
let answer;
for (let i=0; i<participant.length; i++) {
if (completion.indexOf(participant[i])>=0) {
completion.splice(completion.indexOf(participant[i]),1)
} else {
answer=participant[i]
}
}
return answer;
}
이 코드는 정확성 50, 효율성 0의 점수를 받았다. 5번째 줄에서 splice를 사용해 completion 배열에 계속 변화를 주는 것이 효율성을 낮게 하는 주요 원인인 것 같다.
두 번째 풀이
function solution(participant, completion) {
let answer;
participant.sort();
completion.sort();
for (let i=0; i<participant.length; i++) {
if (participant[i] != completion[i]) {
answer = participant[i];
break;
}
}
return answer;
}
딱 한 개의 요소를 제외하고 두 배열의 요소는 같다. 그러므로 똑같이 나열하면 다른 점이 더 잘 드러날 것으로 생각하여 sort를 사용했다.
같은 인덱스에서 요소가 같지 않다면 그 값을 answer에 할당하고 불필요한 검색을 줄이기 위해 break를 사용했다.
도움이 된 자료
완주하지 못한 선수, (2022.02.17), https://programmers.co.kr/learn/courses/30/lessons/42576