다솜이가 국회의원이 되면...큰일날 것 같은데...
정말 문제 그대로 풀면 된다.
1. 반복문을 돌며 다솜이를 포함해서 모든 사람들의 득표수를 살펴서 제일 득표수가 많은 사람을 찾는다
2.제일 득표수가 많은 사람이 다솜이(arr[0])이라면 반복문을 빠져나오고 return
3. 제일 득표수가 많은 사람이 다솜이가 아니라면 그사람의 득표수를 1개 빼오고 다솜이의 득표수를 하나 올린다
(매수하는 사람이 최소가 되게 하기 위해 1씩 이동)
(ex. arr[max]-- arr[0]++)
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] arr = new int[num];
int result=0;
for(int i=0;i<num;i++){
arr[i] = sc.nextInt();
}
while(true){
//돌 때 마다 득표수 많은 사람 찾아야함
int maxPerson =0;
for(int i=0;i<num;i++){
if(arr[i]>=arr[maxPerson])
maxPerson = i;
}
if(maxPerson ==0){
break;
}
arr[0]++;
arr[maxPerson]--;
result++;
}
System.out.println(result);
}
}
여기서의 포인트는 변수 값과 그 범위의 설정이다.
다솜이를 포함해서 득표수가 가장 많은 사람을 뽑아야 하기 떄문에 maxPerson을 0부터 시작한다.
만약 득표수가 같다면(ex)다솜:5 다른 사람:5)
어처피 이 경우에도 표를 뺏어와야 다솜이가 이기기 때문에 arr[i]>=arr[maxPerson] 해줘야한다. (=을 꼭 해줘야 한다)
졸려서 내가 무슨 글을 쓰고 있는지도 모르겠다....ㅎ
'Computer Engineering > 알고리즘 테스트' 카테고리의 다른 글
백준[1244]- 스위치 켜고 끄기 (0) | 2021.02.25 |
---|---|
백준[1764]-듣보잡 (0) | 2021.02.05 |
백준[1654]-랜선자르기 (0) | 2021.02.05 |
코드업[3130]- 소들의 헤어스타일 / java 데이터 타입 (0) | 2021.01.04 |
코드업[3021]- 큰 수 덧셈 (0) | 2021.01.04 |