코테 노트/프로그래머스

Level 1 완주하지 못한 선수 Python3

화요밍 2021. 7. 6. 21:42
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/42576?language=python3 

 

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

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

programmers.co.kr

 

최종 풀이

 

hwayeon351/Programmers-Algorithms

프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.

github.com

from collections import Counter
def solution(participant, completion):
    return list(Counter(participant)-Counter(completion))[0]

풀이 과정

풀이 시간 13분

1. Counter 활용

from collections import Counter
def solution(participant, completion):
    return list(Counter(participant)-Counter(completion))[0]
#시간복잡도 = O(n) 공간복잡도 = O(n)

 

2. Hash 활용

def solution(participant, completion):
    players = dict()
    sum_key = 0
    for p in participant:
        key = hash(p)
        players[key] = p
        sum_key += key
    for c in completion:
        sum_key -= hash(c)
    return players[sum_key]

 

3. sort 활용

def solution(participant, completion):
    last = list(set(participant)-set(completion))
    if len(last) == 1: return last[0]
    participant.sort()
    completion.sort()
    for i in range(len(completion)):
        if participant[i] != completion[i]:
            return participant[i]
    return participant[-1]
#시간복잡도 = O(nlogn) 공간복잡도 = O(n)
728x90
반응형

'코테 노트 > 프로그래머스' 카테고리의 다른 글

Level 2 위장 Python 3  (0) 2021.07.08
Level 2 전화번호 목록 Python3  (0) 2021.07.07
Level 2 주식가격 Python3  (0) 2021.07.05
Level 2 다리를 지나는 트럭 Python3  (0) 2021.07.05
Level 2 프린터 Python3  (0) 2021.07.04