[백준/BOJ]1417. 국회의원 선거 [Silver 5]
- 국회의원 선거
문제출처 : https://www.acmicpc.net/problem/1417
code
#include <stdio.h> int main() { int N, i, j, candidate[1000] = { NULL }; int cnt = 0, max = 0, max_index = 0; scanf("%d", &N); for (i = 0; i < N; i++) scanf("%d", &candidate[i]); if (N == 1) printf("0"); else { while (1) { max = 0; for (i = 1; i < N; i++) if (max < candidate[i]) { max = candidate[i]; max_index = i; } if (candidate[0]>candidate[max_index]) break; else { candidate[max_index]--, candidate[0]++, cnt++; } } printf("%d", cnt); } return 0; }
입력에서 N은 평범하게 받고 후보들은 반복문을 돌며 받는다.
그리고 N이 1이면 자동으로 다솜이가 당선되므로,N이 1일경우와 아닌경우로 나누어준다.
N이 1이 아니면 무한반복문을 돌아주는데, 기호 2번부터(기호1번은 다솜이기때문) 마지막까지 돌면서 최댓값과 그 인덱스를 기억해준다.
기억한 최댓값과 인덱스를 기반으로 표를 가장 많이 받은 후보의 표를-1, 다솜이 표를 +1, 카운트를 +1해준다. 이것을 반복하다 보면 표를 가장많이 받은 후보의 표보다 다솜이의 표(기호1번)가 더 많아지는 시기가 있는데, 이때 무한반복문을 break해주고, 이때까지 카운트한 카운트를 출력해주면 된다.
Author And Source
이 문제에 관하여([백준/BOJ]1417. 국회의원 선거 [Silver 5]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jychan99/1417.-국회의원-선거-Silver-5저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)