알고리즘/백준 풀이(그리디)
백준 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);
}
}