본문 바로가기

백준

1417번: 국회의원 선거(Java)

 

 

 처음엔 int 배열을 사용해 푸려고 했었다. 하지만 Array.sort로 내림차순 정렬을 하기 위해선 Comparator.reverseOrder()을 사용해야 했기 때문에 int 배열 대신 Integer 배열을 사용해 풀기로 했다. 

 

 

 

 

 

 

 

 

 

 우선 다솜이는 기호 1번이기 떄문에 후보 수롤 입력받은 후 후보 수 - 1 만큼의 Integer 배열을 생성하고 다솜이의 득표수를 저장할 int 변수를 따로 만든다.

 

 다음으로  후보들의 득표수를 입력받을 차례다. 우선 다솜이의 득표수를 따로 입력받은 후에 나머지 후보들의 득표 수를 입력받는다.

 

Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Integer[] list = new Integer[n-1];
int me = scanner.nextInt();
int result = 0;
if(n == 1)
{
    System.out.println(0);
    return;
}

for(int i = 0; i<n-1; i++)
{
    list[i] = scanner.nextInt();
}

만약 후보의 수가 1 이라면 경쟁자가 없기 때문에 0을 출력하고 종료한다.

 

 

 

다음으로 다솜이를 제외한 후보들을 내림차순 정렬한 후 다솜이의 득표 수가 나머지 후보들의 0 번째 후보보다 커질 때까지 득표 수를 조작하면 된다.(0 번째 후보가 가장 많은 득표수이므로)

 

Arrays.sort(list, Comparator.reverseOrder());
while(me <= list[0])
{
    me++;
    list[0]--;
    result++;
    Arrays.sort(list, Comparator.reverseOrder());
}

 

 

 

 

 

결과 코드

import java.util.*;

public class Main
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        Integer[] list = new Integer[n-1];
        int me = scanner.nextInt();
        int result = 0;
        if(n == 1)
        {
            System.out.println(0);
            return;
        }

        for(int i = 0; i<n-1; i++)
        {
            list[i] = scanner.nextInt();
        }

        Arrays.sort(list, Comparator.reverseOrder());
        while(me <= list[0])
        {
            me++;
            list[0]--;
            result++;
            Arrays.sort(list, Comparator.reverseOrder());
        }

        System.out.println(result);
    }
}

 

 

'백준' 카테고리의 다른 글

24797번:알파벳 블록(Java)  (1) 2023.04.03
13414번: 수강신청(Java)  (0) 2023.03.02
16165번: 걸그룹 마스터 준석이(Java)  (2) 2023.02.24
9935번:문자열 폭발(Java)  (0) 2023.02.24
5052번:전화번호 목록(Java)  (1) 2023.02.24