[Py_Lv1] 완주하지 못한 선수

Sunghun📈·2021년 5월 3일
0

프로그래머스

목록 보기
40/93
post-thumbnail

문제 설명

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

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

제한 사항

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

입출력 예

접근법

파이썬의 자료형 중 딕셔너리를 이용하면 쉽게 해결할 수 있는 문제다

주어진 참가자 목록인 participant 속 참가자들의 이름을 key로 넣고
인원 수를 의미하는 값으로 1을 넣는다.

이후 완주한 참가자의 목록인 completion 속 참가자들의 이름에 해당하는
key를 찾아 확인했다는 의미로 1을 빼준다.

이렇게 진행되면 값이 1로 존재하는 참가자가 발생하는데 완주하지 못한
참가자로 생각하면 된다.

마지막으로 값이 1인 참가자의 이름을 출력해주면 문제를 통과할 수 있다.

===========================================================

이전 풀이 방법(해시 방식에 더 적합한 풀이)

def solution(participant, completion):
    d = {}
    for i in participant:
        d[i]= d.get(i, 0) +1
    for i in completion:
        d[i] -= 1
    answer = [k for k, v in d.items() if v > 0]
    return answer[0]

복습 풀이 방법

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]
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글