Article Image
Article Image
read
문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh&categoryId=AV139KOaABgCFAYh&categoryType=CODE
입력
총 10개의 테스트 케이스가 주어지며, 각 테스트 케이스의 첫 번째 줄에는 덤프 횟수가 주어진다. 그리고 다음 줄에 각 상자의 높이값이 주어진다.
출력
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 최고점과 최저점의 높이 차를 출력한다.
예제 입력 1
834
42 68 35 1 70 25 79 59 63 65 6 46 82 28 62 92 96 43 28 37 92 5 3 54 93 83 22 17 19 96 ...
617
16 40 59 5 31 78 7 74 87 22 46 25 73 71 30 78 74 98 13 87 91 62 37 56 68 56 75 32 53 ...
...
예제 출력 1
#1 13
#2 32
...
풀이
import java.util.Scanner;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T=10;
for(int test_case = 1; test_case <= T; test_case++)
{
int N = sc.nextInt();
int[] arr = new int[100];
int[] maximum = new int[2];
int[] minimum = new int[2];
for(int i=0; i<100; i++) {
arr[i]=sc.nextInt();
}
for(int j=0; j<N; j++) {
maximum=max(arr);
minimum=min(arr);
if(maximum[0]-minimum[0]<=1)
break;
else {
arr[maximum[1]]-=1;
arr[minimum[1]]+=1;
}
}
maximum=max(arr);
minimum=min(arr);
int result = maximum[0]-minimum[0];
System.out.println("#"+test_case+" "+result);
}
}
public static int[] max(int[] arr) {
int[] max=new int[2];
max[0]=Integer.MIN_VALUE;
for(int i=0; i<arr.length; i++) {
if(max[0]<arr[i]) {
max[0]=arr[i];
max[1]=i;
}
}
return max;
}
public static int[] min(int[] arr) {
int[] min = new int[2];
min[0] = Integer.MAX_VALUE;
for(int i=0; i<arr.length; i++) {
if(min[0]>arr[i]) {
min[0]=arr[i];
min[1]=i;
}
}
return min;
}
}