완주하지 못한 선수_프로그래머스_파이썬

  • 사전지식
    • zip
    • collections.Counter

zip()은 동일한 개수로 이뤄진 두 자료형을 순서대로 짝지어 튜플로 묶어주는 함수입니다.

participant = ["mislav", "stanko", "mislav", "ana"]
completion = ["stanko", "ana", "mislav"]
participant.sort()
completion.sort()
for par,comp in zip(participant, completion):
    print(par,comp)
    
ana ana
mislav mislav
mislav stanko
  • collections.Counter()는 리스트 안에 문자가 몇번 나왔는지 구분해줍니다. (마이너스도 가능)
  • key 값을 뽑을 수 있습니다.
  • elements()를 이용해서 각 값들을 다 볼 수 있습니다.
import collections
collections.Counter(participant)
Counter({'ana': 1, 'mislav': 2, 'stanko': 1})
collections.Counter(completion)
Counter({'stanko': 1, 'ana': 1, 'mislav': 1})
a = collections.Counter(participant) + collections.Counter(completion)
sorted(a.elements())
['ana', 'ana', 'mislav', 'mislav', 'mislav', 'stanko', 'stanko']
list(a.keys())[0]
'mislav'

나의 풀이

def solution(participant, completion):
participant = ["mislav", "stanko", "mislav", "ana"]
completion = ["stanko", "ana", "mislav"]
def solution(participant, completion):
    participant.sort()
    completion.sort()

    for par,comp in zip(participant,completion):
        if par != comp:
            return par
    
    return participant[-1]
    
solution(participant, completion)
'mislav'

다른사람 풀이

import collections

def solution(participant, completion):
    answer = collections.Counter(participant) - collections.Counter(completion)
    return list(answer.keys())[0]

Comments