Algorithm/Programmers

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

메린지 2024. 4. 9. 00:44

1. 문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 풀이

2-1) parti 라는 dict을 하나 구상한다.
2-2) 각 사람이름 마다 1씩 할당해주면서 dict 구성하고,
2-3) 이제 완주 목록 돌리면서 dict 하는데 오류뜨면 한사람만 완주못했기 때문에 그사람, 만약 전체 잘돌아가면 dict value 중에 1이라도 남은 동명이인이 완주못한 경우임
2-4) 그래서 k, v 바꿔서 1인거 찾아내기!!

 

## code ##

import collections
def solution(participant, completion):
    answer = ''
    participant = sorted(participant)
    completion = sorted(completion)

    parti = collections.defaultdict(int)
    for i, person in enumerate(participant):
        parti[person] += 1

    for person in completion:
        try:
            parti[person] -= 1
        except:
            answer = person
            break
    if answer == '':
        parti = {v:k for k, v in parti.items()}
        answer = parti[1]

    return answer