본문 바로가기
Algorithm/Programmers

[Programmers] 완주하지 못한 선수(JavaScript)

by 백승전 2022. 3. 15.

 

알림

 

본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.

 

문제

 

https://programmers.co.kr/learn/courses/30/lessons/42576

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

 

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

 

풀이

 

참여한 선수와 완주한 선수들을 먼저 구해야 합니다. 참가자는 participant, 완주자는 completion 이름의 배열에 담아 두 부류의 배열 만들어 줍니다. 딱 한 명을 제외하고 완주를 한다고 하니, 두 배열을 비교하여 일치하지 않는 부분을 캐치하면 될 것 같습니다.

 

그렇게 하기 위해선 뒤죽박죽인 두 배열을 정렬해야 하니 sort 메서드를 사용하여 배열을 먼저 똑같이 정렬합니다. 뒤죽박죽 배열을 정렬하고 비교하며, 일치하지 않은 부분 캐치하는 방향으로 진행합니다. 여기서 그 다른 부분이 완주하지 못한 한 명의 참가자가 됩니다.

 

마지막으로 두 배열이 같지 않다면(!==) 이를 return 하도록 합니다.

 

코드

 

function solution(participant, completion) {
    let answer = '';
    
    // sort 메서드로 정렬
    participant.sort(); // 참가자 배열
    completion.sort(); // 완주자 배열
    
    // for문
    for (let i = 0; i < participant.length; i++) {
        if (participant[i] !== completion[i]) // 참가자랑 완주자랑 일치하지 않는다면
            return participant[i] // 완주못한 한 명을 return
    }
    
    return answer;
}

댓글