- 문제 설명
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
- 풀이 과정
- 두 배열을 for문으로 돌려 비교한 후 포함 되지 않은 값을 찾으려 했다.
- 동명이인이 있는 배열에서는 값이 나오지 않았다.
아래 코드가 실패한 코드이다.
function solution(participant, completion) {
let answer = "";
for (let i = 0; i < participant.length; i++) {
if ( !completion.includes(participant[i])) {
answer = participant[i];
console.log(answer);
};
}
if ( participant.foreach(x =>{
if (x = x) {
return x;
}
})) else if{
}
}
console.log(solution(["mislav", "stanko", "mislav", "ana"],["stanko", "ana", "mislav"]));
- 중복값을 제거 하려 했는데 도무지 답이 나오지 않았다.
- 검색을 통해 힌트를 얻었다. 두 배열 모두 사전식으로 정렬 후 같은 위치에 두요소를 비교할 때 같지 않을때의 값이 동명이인이고, 완주자의 값이 되는 것이다.
- 생각을 달리 하면 어렵지 않은 문제이다.
아래는 완성된 코드이다.
function solution(participant, completion) {
let a = participant.sort();
let b = completion.sort();
for (let i = 0; i < a.length; i++) {
if ( a[i] !== b[i]) {
return a[i];
};
}
}