완주하지 못한 선수
문제
완주하지 못한 선수
풀이
function solution(participant, completion) {
let answer = '';
const sortP = participant.sort();
const sortC = completion.sort();
for(var i = 0, len = sortP.length; i <len; i++){
if(sortP[i] !== sortC[i]){
answer = sortP[i];
break;
}
}
return answer;
}
- 참가자 목록(participant) 완주자목록(completion)의 차이는 1개뿐 , 즉 1명만 완주못함
- 일단 정렬해서 값은 인덱스에 같은값이 들어있는지 보면됨
- 찾으면 반복 중단.
코드 변경 - 간단하게 줄여보았다.
function solution(participant, completion) {
completion.sort();
return participant.sort().find((e, i) => e !== completion[i]);
}
- sort메소드는 원본배열을 변경하므로 변수안써버렸음 (실무에선 그럼 안되겠지만 ㅋㅋ)
- 또한 메소드 체인이 가능하므로 sort와 find 배열 메소드를 통해 바로 리턴.
- find 메소드는 조건에 해당하는 엘리먼트를 바로 리턴하고 반복을 종료한다. 맵 처럼 끝까지 돌 필요가 없으므로 사용