CS/알고리즘
완주하지 못한 선수.
mooonQ
2020. 5. 4. 09:32
나의 풀이
function solution(participant, completion) {
var answer = '';
participant.sort();
completion.sort();
for (var i= 0; i < participant.length; i++) {
if (participant[i] === completion[i]){
} else {
answer = participant[i];
return answer;
}
}
return answer;
}
떠오른 생각_
1. 두 리스트 participant와 completion을 오름차순이든 내림차순이든 같은 방식으로 정렬한다.
2. loop를 돌려 같은 번째 인덱스끼리 비교한다.
3. 같은 인덱스끼리 비교했을 때 같은 값이 나오지 않으면 그 인덱스의 값이 participant에만 있고 completion에는 없기 때문에 그 값이 정답이다.
다른 분들 풀이
귀찮더라도 for (let i = 0; i< arr.length; i++)식으로 씁시다. for in 은 끝까지 다 돌기 때문에 비효율적입니다.
이분은 pop을 써서 한결 코드가 간결해졌다.
const solution = (p, c) => {
p.sort()
c.sort()
while (p.length) {
let pp = p.pop()
if (pp !== c.pop()) return pp
}
}