본문 바로가기

programmers 알고리즘/구현

완주하지 못한 선수 (해시)

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

 

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

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

programmers.co.kr

# 방법 1
def solution(participant, completion):
    D = {x: 0 for x in set(participant)}

    # D: {'leo': 1, 'kiki': 1, 'eden': 1}
    for x in participant:
        D[x] += 1

    # D: {'leo': 1, 'kiki': 0, 'eden': 0}
    for x in completion:
        D[x] -= 1

    # ans: "leo"
    # ans = list(filter(lambda k: D[k] == 1, D))[0]
    ans = [k for k in D if D[k] == 1][0]
    return ans


# 방법 2
from collections import Counter


def solution(participant, completion):
    # D: {'leo': 1}
    D = Counter(participant) - Counter(completion)

    ans = list(D.keys())[0]
    return ans


res = solution(["leo", "kiki", "eden"], ["eden", "kiki"])
print(res)

'programmers 알고리즘 > 구현' 카테고리의 다른 글

기능개발 (스택/큐)  (0) 2020.11.04
주식가격 (스택/큐)  (0) 2020.11.03
베스트앨범 (해시)  (0) 2020.11.03
위장 (해시)  (0) 2020.11.02
전화번호 목록 (해시)  (0) 2020.11.02