상세 컨텐츠

본문 제목

99클럽 코테 스터디 24일차 TIL + 오늘의 학습 키워드 : 힙

본문

728x90
반응형

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. 결과 출력: 최종적으로 필요한 투표 수를 출력합니다.

728x90
반응형

관련글 더보기