코딩테스트/[PG] 문제 풀이

[프로그래머스] 해시 - 완주하지 못한 선수

_JAEJAE_ 2021. 8. 23. 00:13

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

 

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

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

programmers.co.kr


[풀이 과정]

1. 중복된 이름은 연달아 나올 수 있게 participant와 completion모두 정렬을 시킨다.

 

2. completion의 길이만큼 반복하면서 participant와 completion이 일치하지 않는 위치를 찾는다.

ex. 3번 예시

participant  : ['ana', 'mislav', 'mislav', 'stanko'], completion : ['ana', 'mislav', 'stanko']

정렬 후 리스트들은 위와 같고 2번째 인덱스에서 다른 값이 나오기 때문에 participant[2]를 반환한다.

 

3. 반복문을 마치고 겹치는 부분이 없었다면 participant의 마지막 값을 리턴한다.

ex. 1번 예시

participant : ['eden', 'kiki', 'leo'], completion : ['eden', 'kiki']

정렬 후 리스트들은 위와 같고 completion의 길이만큼 반복문을 돌렸을 때는 값이 모두 일치한다.

따라서 완주하지 못한 사람은 participant[-1]인 'leo'이기 때문에 그 값을 반환한다.

 


[소스 코드]

def solution(participant, completion):
    participant.sort()
    completion.sort()
    
    for i in range(len(completion)):
        if participant[i] != completion[i]:
            return participant[i]
    return participant[-1]