본문 바로가기
코딩공부/프로그래머스 (python)

[프로그래머스] 완주하지 못한 선수 (python)

by CodingKwon 2021. 7. 16.

문제 링크 (Level 1)

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

 

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

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

programmers.co.kr

 

나의 코드 (python)

첫 번째 코드 (정확성 테스트는 통과, 효율성 테스트 실패 : 시간 초과)

def solution(participant, completion):
    answer = ''
    
    for i in completion:
        for j in participant:
            if i == j:
                participant.remove(i)
                break
    answer = participant.pop()

    return answer

 

두 번째 코드 (통과)

def solution(participant, completion):

    participant.sort()
    completion.sort()

    for i, j in zip(participant, completion):
        if i != j:
            return i

    return participant[-1]

 

먼저 두 값을 정렬하고 zip으로 묶어서 비교합니다. 다른 것이 있다면 이는 완주하지 못한 선수일 것입니다. 이유는 두 배열이 정렬되어 있기 때문에 같은 값이 나오지 않는다면 participant에만 있는 값이기 때문입니다.

하지만 두 값을 비교했을 때 완주하지 못한 선수를 검증하지 못했다면 배열의 크기가 1 더 큰 participant의 마지막 인덱스에 위치한 선수가 완주하지 못한 선수일 것입니다.

댓글