Algorithm/Programmers

[프로그래머스/Level 1] 완주하지 못한 선수- python

chea-young

완주하지 못한 선수


문제내용

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

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

입력방식

- 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
- completion의 길이는 participant의 길이보다 1 작습니다.
- 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
- 참가자 중에는 동명이인이 있을 수 있습니다.

프로그래밍 순서

1. participant 리스트와 completion 리스트를 정렬시킵니다.

2. 두 리스트를 pop 함수를 이용해 비교합니다.

  2-1 만약 두 개의 값이 동일하지 않다면 해당 이름은 완주하지 못한 선수이기 때문에 반환시킵니다.

3. while을 모두 돌았음에도 불구하고 반환된 값이 없다면 paticipant의 남은 값이 완주하지 못한 선수이기 때문에 반환시킵니다. 


전체코딩

 

- 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(participant, completion):
    # 리스트 정렬
    participant.sort()
    completion.sort()
    # 완주하지 못한 선수 찾기
    while completion:
        eleP = participant.pop()
        eleC = completion.pop()
        # 완주한 선수 이름과 참가 이름이 같지 않은 경우 -> 완주 못한 선수 반환
        if eleP != eleC:
            return eleP
    
    return participant.pop()
 


이전의 풀어봤던 문제를 이번에 프로그래머스 커뮤러닝에 참여하면서 다시 풀었기 때문에 프로그래머스 점수는 뜨지 않았습니다!