개발공부/Problem Solving

[프로그래머스 고득점 Kit] 완주하지 못한 선수

개발자 찐빵이 2022. 1. 3. 07:41
728x90
 

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

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

programmers.co.kr

요구사항

participant : 마라톤에 참여한 선수들 배열
completion : 완주한 선수들의 배열
result : 완주하지 못한 선수의 이름 (항상 1명)

주의사항

completion의 길이가 participant보다 1 작다.
이름은 모두 알파벳 소문자이다.
동명이인 존재한다.

코드

function findDidnotFinishedPlayer(participant, completion){
    for (let i = 0; i < completion.length; i++){
        if(completion[i] != participant[i]){
            return participant[i];
        }
    }

    return participant[participant.length-1];
}

function solution(participant, completion) {
    participant.sort();
    completion.sort();

    return findDidnotFinishedPlayer(participant, completion);
}

복잡도

시간복잡도 : sort가 가장 시간이 많이 걸리므로 O(NlogN)
공간복잡도 : 배열을 저장하는 공간 O(N)

아쉬운 점

Map을 써서 풀었으면 더 간단히 풀렸을 것 같다. (O(1)에 풀 수 있지 않을까?)
Map과 hash에 대해 공부해보자.

반응형

'개발공부 > Problem Solving' 카테고리의 다른 글

[프로그래머스 고득점 Kit] 위장  (0) 2022.01.05