문제설명

 

소스코드

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int me = sc.nextInt(); //나 == 다솜
		Integer arr[] = new Integer[N-1]; //내림차순 정렬을 위해 박싱
		int count = 0; //매수해야 하는 사람 수
		for(int i = 0; i < arr.length; ++i) arr[i] = sc.nextInt();
		while(true)
		{
			Arrays.sort(arr, Collections.reverseOrder()); //내림차순 정렬
			if(N == 1 || arr[0] < me) break; //N이 0이거나 배열의 가장 큰 수가 나보다 작으면 탈출
			else
			{
				++me;
				--arr[0];
				++count;
			}
		}
		System.out.print(count);
	}
}

 

설명

  • 나(다솜)과 다른 후보의 득표 수를 받는다.
  • 다른 후보의 득표수를 저장한 배열을 내림차순으로 정렬시킨다.
  • 가장 큰 득표수(arr[0])이 나보다 작으면 반복문을 탈출하고, 그렇지 않다면 가장 많은 득표수를 받은 후보의 지지자 한명을 매수한다.