완주하지 못한 선수(코테)

정지우·2021년 12월 29일
0

codingTest.zip

목록 보기
1/1
post-thumbnail

완주하지 못한 선수

문제 분석

🗣 마라톤에 참여한 선수들 목록을 담은 배열 participant와 완주 명담이 담긴 배열 completion을 입력 받아, 완주하지 못한 선수의 이름을 문자열 형태로 반환하는 함수를 구현해야 합니다.
🗣 participant에 속하지만, completion에 속하지 않은 문자열 1개를 찾아야 합니다.

코드 구현

function solution(participant, completion) {
    // 반환할 문자열을 담을 변수 answer 선언 및 빈 배열 할당
    let answer = '';
    // 각 배열을 정렬
    participant.sort();
    completion.sort();
    for(let i = 0; i < participant.length; i++){
        if(participant[i] !== completion[i]) {
            answer = participant[i];
            return answer;
        }
    }
}

문제 해결

1️⃣ 시간 복잡도

마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.

🗣 시간 복잡도를 고려해야 합니다. 입력 받은 배열을 정렬하여, 시간 복잡도를 줄일 수 있습니다.

2️⃣ 동명이인 참가자

참가자 중에는 동명이인이 있을 수 있습니다.

🗣 정렬한 두 배열을 같은 index끼리 비교하여, 같지 않은 요소가 있을 경우, 그 요소가 정답입니다.

3️⃣ return의 위치

🗣 return문을 함수 맨 마지막에 위치시키면, for문 안에서 answer가 계속 바뀔 수 있습니다. 정답이 나오면 바로 리턴문으로 처리해줍니다.

오답

function solution(participant, completion) {
    // 반환할 문자열을 담을 변수 answer 선언 및 빈 배열 할당
    let answer = '';
    // 각 배열을 정렬
    participant.sort();
    completion.sort();
    for(let i = 0; i < participant.length; i++){
        if(participant[i] !== completion[i]) {
            answer = participant[i];
        }
    }
    return answer;
}

정답

function solution(participant, completion) {
    // 반환할 문자열을 담을 변수 answer 선언 및 빈 배열 할당
    let answer = '';
    // 각 배열을 정렬
    participant.sort();
    completion.sort();
    for(let i = 0; i < participant.length; i++){
        if(participant[i] !== completion[i]) {
            answer = participant[i];
            return answer;
        }
    }
}

profile
재미를 쫓는 개발자

0개의 댓글