[Python][프로그래머스 Lv.2] 완주하지 못한 선수

1jinju·2023년 10월 17일
0

프로그래머스

목록 보기
12/14

완주하지 못한 선수

def solution(participant, completion):
    p = dict(zip(participant, [0]*len(participant)))
    c = dict(zip(completion, [0]*len(completion)))
    for i in participant: # 참여자 딕셔너리(동명이인이면 값에 +1)
        if p[i] != 0:
            p[i] += 1
        else:
            p[i] = 1
    for i in completion: # 완주자 딕셔너리(동명이인이면 값에 +1)
        if c[i] != 0:
            c[i] += 1
        else:
            c[i] = 1    
    for i in p.keys():
        try:
            if p[i] > c[i]: # 참여자 명단의 해당 선수 수가 완주자 명단의 해당 선수 수보다 클 때
                return i
        except: # 참여자에는 있지만 완주자에는 없는 경우, key 에러가 뜸
            return i

다른 사람의 풀이

import collections

def solution(participant, completion):
	# 참가자와 완주자 리스트를 딕셔너리로 변환하여 중복 횟수를 세기 위해 Counter를 사용
    # 완주자 리스트를 참가자 리스트에서 빼서 누락된 참가자를 찾음
    answer = collections.Counter(participant) - collections.Counter(completion)
    # 딕셔너리의 키 중에서 첫 번째 키, 즉 완주하지 못한 참가자를 반환
    return list(answer.keys())[0]

Counter는 몰랐다 ..

profile
아자잣

0개의 댓글