수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
| participant | completion | return |
|---|---|---|
| ["leo", "kiki", "eden"] | ["eden", "kiki"] | "leo" |
| ["marina", "josipa", "nikola", "vinko", "filipa"] | ["josipa", "filipa", "marina", "nikola"] | "vinko" |
| ["mislav", "stanko", "mislav", "ana"] | ["stanko", "ana", "mislav"] | "mislav" |
- 참여한 선수의 수는 1명 이상 100,000명 이하 → 시간복잡도 고려! 이중 for문은 Timeout이 날 것, 단순 정답을 출력하기보다는 효율성의 문제 생각 필요
- 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주 → 한 명만 골라내면 됨
function solution(p, c) {
const total = p.length;
var ans = '';
p.sort();
c.sort();
for(let i=0; i<total; i++){
if(p[i] !== c[i]){
ans = p[i];
return ans;
}
}
}
function solution(p, c) {
p.sort();
c.sort();
while (p.length) {
let pp = p.pop();
if (pp !== c.pop()) return pp;
}
}
배열에서 마지막 요소를 제거하고 그 요소를 반환
function solution(participant, completion) {
participant.sort();
completion.sort();
let answer = participant.find((runner,index)=> runner !== completion[index]);
return answer;
}
배열에서 특정 값을 찾는 조건을 callback 함수를 통해 전달하여, 조건에 맞는 값 중 첫번째 값을 리턴