본문 바로가기

Python/알고리즘 풀이

[Python : 알고리즘] 프로그래머스 #42576 완주하지 못한 선수

300x250

문제 바로가기

 

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

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

programmers.co.kr

파이썬 풀이입니다.

 

def solution(participant, completion):
    participant.sort()
    completion.sort()

    for i in range(len(completion)):
        if participant[i] != completion[i]:
            return participant[i]

    return participant[i+1]

먼저, 참가자 배열과 완주자 배열을 인덱스로 비교하기 위해서 두 배열을 파이썬의 sort() 함수를 이용해서 정렬을 합니다.

이후  completion 배열의 크기만큼 for loop를 돕니다.

 

이때 각 배열을 순차적으로 비교하면서 배열의 값이 다를경우에 retrun 해줍니다. (완주자 명단에 없는 참가자)

 

만약 completion 배열의 크기만큼 모두 loop를 돌아도 returnr값이 없다면, 정렬된 participant 배열의 마지막 참가자가 완주를 하지 못한 선수입니다.

(completion 배열의 크기가 participant배열의 크기보다 항상 1이작고, 정렬된 상태이므로 completion 배열의 마지막 index까지의 참가자는 모두 완주를 하였기 때문에 for loop에서 처리되지 않은 participant의 마지막 참가자가 완주하지 못함)

 

위의 예제에 주석이 포함된 소스코드는 

여기 에서 보실 수 있습니다.

320x100