algorithm/python

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

아르르르를를르 2020. 3. 5. 23:51

프로그래머스 코딩테스트 문제를 풀고 있다.

https://programmers.co.kr/learn/courses/30/parts/12077

level1

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

 


2021.12.09 추가

Counter를 사용하면 객체간의 빼기가 가능하다.

 

- Counter를 사용한 문제풀이

import collections

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

 

Collections.Counter()

데이터의 객체를 셀 때 유용한 라이브러리.

보통 python에서 객체를 셀 때 dictionary를 활용하여 다음과 같이 구현한다.

    record = dict()
    for p in participant:
        if record.get(p) == None:
            record[p] = 1
        else:
            record[p] += 1

그런데 Counter 함수를 사용하면 한 줄로 끝낼 수 있다.

from collections import Counter

Counter(participant)

 

정렬도 가능하고

Counter('hello world').most_common()

 

뺄셈도 가능하다.

collections.Counter(participant) - collections.Counter(completion)