알고리즘
백준 1417번-국회의원 선거(JAVA)
쿠키담임선생님
2022. 11. 3. 15:57
풀이 방법
기초 우선순위 큐 예제이다.
우선순위 큐를 사용하면서 가장 높은 숫자로 reverseOrder 시킨 뒤
위에서부터 뺏다가 다시 -1 하고 넣어주는 방식이다.
특이한 점으로는 3개의 입력을 동시에 처리하는 게 아니라 첫번째 자기 자신의 투표수는 따로 변수로 빼놓고 계속 비교시켯다.
코드
package pro;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.PriorityQueue;
public class test2 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int a = Integer.parseInt(br.readLine());
PriorityQueue<Integer>que = new PriorityQueue<>(Collections.reverseOrder());
for(int i=0;i<n-1;i++) {
que.offer(Integer.parseInt(br.readLine()));
}
int cnt = 0;
while(!que.isEmpty() && que.peek()>=a) {
cnt++;
a++;
que.offer(que.poll()-1);
}
System.out.println(cnt);
}
}