난이도 : Level. 1
언어 : Javascript
출제 내역 : 해시
마라톤 경기에서 마지막까지 완주하지 못한 1인을 찾아보자
function solution(participant, completion) {
var answer = '';
for (let i = 0; i<participant.length; i++) {
if (participant.indexOf(completion[i]) >= 0) {
participant[participant.indexOf(completion[i])] = ''
}
}
answer = participant.join('')
return answer;
}
참가자 명단 배열과 완주자 명단 배열을 가지고 반복문을 만들었습니다.
완주자 명단에 없는 이름 하나가 참가자 명단에 있었기에
참가자 명단에서 완주자 명단을 찾아 있다면 '' 로 변환해 주었습니다.
그렇게 마지막까지 돌게 되면 하나의 이름만 남기에 join
함수를 이용해 합쳐주고
그 값을 answer에 담아 테스트는 통과를 했습니다.
그러나 효율성 테스트에서는 전체 실패라는 기염(?)을 토합니다...;
아마 반복문에서 인덱스 값을 활용해서 값을 찾아내다보니
계속해서 같은 작업을 반복해야하기에 효율성이 떨어지는 것 같습니다.
function solution(participant, completion) {
var answer = '';
participant.sort();
completion.sort();
for (let i = 0; i<participant.length; i++) {
if (participant[i] !== completion[i]) {
answer = participant[i]
break;
}
}
return answer;
}
그래서 한번만 반복 할 수 있도록, 미리 두 배열을 sort()
로 정렬하고,
같은 인덱스끼리 비교해 같지 않은 값이 나올 경우에
해당 값을 answer에 넣어주고 반복문을 종료했습니다.
효율적인 부분도 고려를 해야했던 문제라서
조금 더 시간이 걸렸던 것 같습니다