프로그래머스 | 완주하지 못한 선수_JS

난이도 : Level. 1
언어 : Javascript
출제 내역 : 해시

❓ Question

마라톤 경기에서 마지막까지 완주하지 못한 1인을 찾아보자

📝 My Solution

전체 풀이 코드 👈🏻 클릭시 Github로 이동

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에 넣어주고 반복문을 종료했습니다.

결과

효율적인 부분도 고려를 해야했던 문제라서
조금 더 시간이 걸렸던 것 같습니다

좋은 웹페이지 즐겨찾기