일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JavaScript
- 클라우드
- next.js
- TypeScript
- 가상화
- 솔리디티
- 백엔드
- 리액트
- kubernetes
- 자바스크립트
- 이더리움
- 쿠버네티스
- AWS
- 프론트엔드
- 알고리즘
- 블록체인
- 컴퓨터공학
- 파이썬
- docker
- react
- es6
- HTML
- 이슈
- 백준
- BFS
- VUE
- 웹
- CSS
- k8s
- 타입스크립트
Archives
- Today
- Total
즐겁게, 코드
백준 1417번 : 국회의원 선거 본문
시뮬레이션으로 분류되어 있지만, 우선순위 큐를 활용해 풀 수 있는 문제였습니다.
풀이
우선순위 큐는 pop 동작 시 언제나 가장 작거나 큰 값을 내보낸다는 특징이 있습니다.
따라서, 이 속성을 이용해 다음과 같은 시퀀스를 구성합니다.
- 우선순위 큐 가장 위의 득표수를 1 뺀다.
- 다솜이의 득표수를 1 올린다.
- 1번에서 뺀 득표수를 다시 우선순위 큐에 삽입한다.
- 만약 다솜이의 득표수가 큐의 가장 위의 원소보다 크다면 중단한다.
[정답 코드 - Python]
import heapq
import sys
input = sys.stdin.readline
pq = []
cnt = 0
N = int(input())
G = -int(input())
for i in range(1, N):
temp = int(input())
# 우선순위 큐가 내림차순으로 원소를 pop하도록 - 기호를 붙입니다.
heapq.heappush(pq, -temp)
# 큐가 비어있는 경우에만 반복문을 실행합니다.
while True and pq:
temp = heapq.heappop(pq)
if temp <= G:
temp += 1
cnt += 1
G -= 1
heapq.heappush(pq, temp)
else:
break
print(cnt)
반응형
'💯 알고리즘 > 백준 온라인 저지' 카테고리의 다른 글
백준 16469번 : 소년 점프 (0) | 2022.05.29 |
---|---|
백준 2992번 : 크면서 작은 수 (2) | 2021.10.20 |
파이썬에서 우선순위 큐 사용하기 (0) | 2021.09.21 |
백준 1182번 : 부분수열의 합 (1) | 2021.09.12 |
백준 6603번 : 로또 (0) | 2021.09.04 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆