마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
입출력 예시
participant : ["leo", "kiki", "eden"]
completion : ["eden", "kiki"]
-> "leo"
function solution(participant, completion) {
var answer = participant;
completion.map((c) => {
var idx = answer.indexOf(c);
answer.splice(idx, 1);
})
return answer[0];
}
처음에 이렇게 풀었다.
이것도 splice 함수 인자가 delete할 부분의 첫 번째 위치, 마지막 위치인줄 알고 (idx, idx+1)로 했었는데 두 번째 인자는 delete 개수더라. 검색해보고 알았다ㅎ
그래서 맞겠거니 했는데 효율성 검사에서 실패함😪
나같은 사람이 있나 질문하기 들어갔다가 스포(?)를 봐버림
function solution(participant, completion) {
var answer = "";
participant.sort();
completion.sort();
for (var i=0; i<participant.length; i++) {
if (participant[i] != completion[i]) {
answer = participant[i];
break;
}
}
return answer;
}
sort를 사용해서 풀었다.
다른 풀이 보니까 엄청엄청 간단하게 푼 사람들도 있더라
var solution = (participant,completion) => participant.find(name => !completion[name]--, completion.map(name => completion[name]=(completion[name]|0)+1))
이해못해서 한참을 보고 댓글도 보고 겨우 이해했다.
근데 내 머리로는 도저히 나올 수 없는 창의적인 답임