github : 완주하지 못한 선수
const solution = (participants, completions) => {
participants = participants.sort();
completions = completions.sort();
};
const solution = (participants, completions) => {
participants = participants.sort();
completions = completions.sort();
return participants.filter(
(participant, index) => completions[index] !== participant
)[0];
};
["kiki", "eden", "leo"], ["eden", "kiki"]
"leo"
가 정답이 된다. 나는 참가자 목록의 배열에 filter를 적용하면서 completions 배열의 index 범위에서 벗어난 위치에 접근하면 안되지 않은가? 라는 생각에 filter가 빈 배열을 반환했을 시 참가자 목록의 마지막 원소를 반환하도록 아래와 같이 단축 평가를 이용했다. return (
participants.filter(
(participant, index) => completions[index] !== participant
)[0] || participants[participants.length - 1]
);
find
가 있다. filter를 사용하면 새로운 배열을 반환하기 때문에 배열의 첫 번째 요소를 반환해야 하므로 [0]
을 붙여야 했다. 이 부분이 마음에 들지 않았고, 이 문제를 풀 땐 가독성을 생각하면 find
를 사용하는것이 더 적절하다고 생각한다.const solution = (participants, completions) => {
participants = participants.sort();
completions = completions.sort();
return participants.find((it, index) => it !== completions[index]);
};