프로그래밍/함수형 프로그래밍

[함수형 프로그래밍 연습하기] 프로그래머스 Level1 - 완주하지 못한 선수

mhko411 2021. 8. 7. 16:01
728x90

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

 

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

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

programmers.co.kr


접근

입력받은 참가한 사람들과 완주한 사람들을 이름순으로 정렬하고 순서대로 비교한다. 이름이 다를 경우 참가한 사람의 이름이 완주하지 못한 것이기 때문에 해당 이름을 반환한다. 

위에서 탐색을 진행했을 때도 다른 이름이 없을 때는 마지막 사람의 이름을 반환한다.

 

구현

- 먼저 참가자와 완주한 사람들을 정렬한다.

- find 함수에 참가, 완주한 사람들의 배열을 전달하고 탐색을 진행한다.

- 이름이 다를 경우 참가한 사람의 이름을 반환하고

- 위에서 반환되지 않았을 때는 마지막 사람의 이름을 반환한다.

function find(participant, completion) {
    let N = participant.length;
    for(let i=0; i<N-1; i++) {
        if(!isEqual(participant[i], completion[i])) return participant[i];
    }
    return participant[N-1];
}

function isEqual(a, b) {
    return a === b;
}

function solution(participant, completion) {
    let answer = '';
    participant = participant.sort();
    completion = completion.sort();
    answer = find(participant, completion);
    return answer;
}