※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 1417번 문제인 국회의원 선거이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/1417
1417번: 국회의원 선거
첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같
www.acmicpc.net
다솜이를 제외한 다른 사람의 득표수의 최댓값이 다솜이의 투표수보다 작거나 같지 않게 될 때까지 가장 득표수가 많은 사람을 지지하는 사람을 매수하는 과정을 시뮬레이션해 문제를 해결하자.
여러 사람의 득표수의 최댓값을 항상 바로바로 접근하는 것은 우선순위 큐(priority queue) 자료구조를 이용하면 빠르고 간단하게 구현할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <queue>
using namespace std;
int N;
priority_queue<int> pq;
int dasom;
int ans;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> dasom;
for (int i = 1; i < N; i++) {
int x; cin >> x;
pq.push(x);
}
pq.push(0);
while (pq.top() >= dasom) {
int x = pq.top(); pq.pop();
pq.push(x - 1);
dasom++, ans++;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 9694 // C++] 무엇을 아느냐가 아니라 누구를 아느냐가 문제다 (0) | 2023.02.21 |
---|---|
[BOJ 9324 // C++] 진짜 메시지 (0) | 2023.02.21 |
[BOJ 25312 // C++] 200% Mixed Juice! (0) | 2023.02.21 |
[BOJ 17478 // C++] 재귀함수가 뭔가요? (0) | 2023.02.21 |
[BOJ 9536 // C++] 여우는 어떻게 울지? (0) | 2023.02.21 |