알고리즘/백준 풀이(그리디)

백준 1417번 - 국회의원 선거

공부 기록장 2024. 2. 19. 20:26

https://www.acmicpc.net/problem/1417

 

1417번: 국회의원 선거

첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같

www.acmicpc.net

 

다음 문제는 주어진 수들 중 최대값을 찾아 arr[0]의 값과 +1, -1 씩 교환하고 최대값이 arr[0] 으로 되기 전까지 다시 최대값을 찾아 이 계산을 반복한다.

 

 

 

▶코드

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int index = 0, max = 0, cnt = 0;
        int N = Integer.parseInt(br.readLine());
        int[] arr = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }
        max = arr[0];
        for (int i = 1; i < N; i++) {
            if (max <= arr[i]) {
                max = arr[i];
                index = i;
            }
        }
        while (true) {
            if (index == 0)
                break;
            arr[0]++;
            arr[index]--;
            cnt++;
            max = arr[index];
            for (int i = 0; i < N; i++) {
                if (max <= arr[i]) {
                    max = arr[i];
                    index = i;
                }
            }
        }
        System.out.println(cnt);
    }
}