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

강주형·2022년 8월 9일
0

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

해시

def solution(participant, completion):
    for p, c in zip(sorted(participant), sorted(completion)):
        if p != c:
            return p
    return sorted(participant)[-1]

나랑 똑같이 푼 사람이 많은 것 같음


타인 코드
import collections

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

Counter 객체를 사용했다. (처음 봤음)

아래 예시 코드로 이해해보자

import collections

participant = ["mislav", "stanko", "mislav", "ana"]
completion = ["stanko", "ana", "mislav"]

print(collections.Counter(participant))
print(collections.Counter(completion))
print(collections.Counter(participant) - collections.Counter(completion))
Counter({'mislav': 2, 'stanko': 1, 'ana': 1})
Counter({'stanko': 1, 'ana': 1, 'mislav': 1})
Counter({'mislav': 1})

딕셔너리처럼 나오는데 연산도 가능한 객체인 것 같음


  1. Counter 알아가기
  2. sort의 시간복잡도가 낮은 편은 아니라서 다른 방법들도 생각해보자
profile
Statistics & Data Science

0개의 댓글