알고리즘

백준 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);
		

	}

}