Python의 `heapq` 모듈을 사용하여 구현할 수 있습니다. Python에서는 기본적으로 최소 힙(min-heap)을 제공하므로, 최대 힙(max-heap)으로 사용하기 위해 음수 값을 저장하는 방식으로 구현할 수 있습니다.
정답 파이썬 코드:
```python
import sys
import heapq
def main():
input = sys.stdin.read
data = input().splitlines()
N = int(data[0]) - 1
dasom = int(data[1])
# 최대 힙을 위해 음수로 변환하여 저장
pq = [-int(data[i + 2]) for i in range(N)]
heapq.heapify(pq)
count = 0
while pq and -pq[0] >= dasom:
dasom += 1
# 가장 큰 값을 꺼내고 1 감소시켜 다시 넣기
largest = -heapq.heappop(pq) - 1
heapq.heappush(pq, -largest)
count += 1
print(count)
if __name__ == "__main__":
main()
```
설명
1. 입력 처리: `sys.stdin.read`를 사용하여 모든 입력을 한 번에 읽고, 줄 단위로 나누어 처리합니다.
2. 우선순위 큐: `heapq` 모듈을 사용하여 최대 힙을 구현하기 위해 모든 후보의 투표 수를 음수로 변환하여 저장합니다.
3. 주요 로직: Java 코드와 동일하게, 1번 후보의 투표 수가 다른 후보의 투표 수보다 클 때까지 반복하며, 각 반복에서 가장 큰 투표 수를 가진 후보의 투표 수를 감소시키고, 1번 후보의 투표 수를 증가시킵니다.
4. 결과 출력: 최종적으로 필요한 투표 수를 출력합니다.
항해26일차 (0) | 2024.11.23 |
---|---|
99클럽 코테 스터디 25일차 TIL + 오늘의 학습 키워드 : 힙 (1) | 2024.11.22 |
99클럽 코테 스터디 23일차 TIL + 오늘의 학습 키워드 : 힙 (1) | 2024.11.19 |
99클럽 코테 스터디 22일차 TIL + 오늘의 학습 키워드 : 힙 (1) | 2024.11.18 |
99클럽 코테 스터디 21일차 TIL + 오늘의 학습 키워드 : 힙 (2) | 2024.11.17 |