https://www.acmicpc.net/problem/1417
1417번: 국회의원 선거
첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같
www.acmicpc.net
문제
풀이
다솜보다 높은 득표 수를 가진 후보자들이 없어질 때 까지 표를 뺏는 코드를 작성해주었다.
후보자들 중 가장 높은 득표 수를 가진 후보자의 표를 우선으로 매수했습니다.
코드
# 1417번 국회의원 선거
import sys
from heapq import heappop, heappush, heapify
n = int(input())
dasom_vote = int(input())
votes = []
for _ in range(n-1):
vote = int(sys.stdin.readline())
votes.append([-vote, vote]
)
heapify(votes)
def compare_dasom():
for i in range(n-1):
# 다솜의 표가 적어도 하나의 후보자의 표보다 적거나 같은 경우
if dasom_vote <= votes[i][1]:
return True
# 다른 각각의 후보자의 표보다 다솜의 표가 더 많은 경우 -> 매수 종료
return False
ans = 0
if not votes:
print(ans)
else:
while compare_dasom():
competition_vote = heappop(votes)[1]
competition_vote -= 1
heappush(votes, [-competition_vote, competition_vote])
dasom_vote += 1
ans += 1
print(ans)
출력결과
'백준 > 우선순위 큐' 카테고리의 다른 글
[백준][Python] 14235번 크리스마스 선물 - 실버 3 (0) | 2024.04.16 |
---|---|
[백준][Python] 15903번 카드 합체 놀이 - 실버 1 (0) | 2024.04.14 |