문제
위와 같이 상자가 쌓여있을 때 ,가장 높게 쌓인 상자를 가장 낮게 쌓인 상자쪽으로 옮기는 평탄화 작업을 한다.
1cycle에 한 개의 상자를 옮길 때, 입력된 값만큼의 사이클을 반복했을 때, 가장 높게 쌓인 상자와 낮게 쌓인 상자를 차이를 구하는 문제
풀이방법
1) 매 사이클 마다 가장 높게 쌓인 상자와 낮게 쌓인 상자를 찾는다
2) 가장 높게 쌓인 상자의 갯수를 1 감소시키고 낮게 쌓인 상자의 갯수를 1 증가시킨다.
3) 이렇게 n번 반복했을 때 가장 높은 상자와 낮은 상자의 차를 구한다.
소스코드
package samsung;
import java.util.*;
public class s_1208 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int t = 1; t <= 10; t++) {
int n = sc.nextInt();
int[] a = new int[100];
for(int i = 0; i < 100; i++) {
a[i] = sc.nextInt();
}
for(int i = 0; i < n; i++) {
int max = 0;
int max_idx = 0;
int min = 1001;
int min_idx = 0;
for(int j = 0; j < 100; j++) {
if(a[j] >= max) {
max = a[j];
max_idx = j;
}
if(a[j] <= min) {
min = a[j];
min_idx = j;
}
}
a[max_idx]--;
a[min_idx]++;
}
int max = 0;
int min = 1001;
for(int i = 0; i < 100; i++) {
max = Math.max(max, a[i]);
min = Math.min(min, a[i]);
}
System.out.println("#" + t + " " + (max-min));
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 1213. [S/W 문제해결 기본] 3일차 - String (0) | 2020.02.16 |
---|---|
[SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum (0) | 2020.02.16 |
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2020.02.16 |
[SWEA] 1959. 두 개의 숫자열 (0) | 2020.02.15 |
[SWEA] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (0) | 2020.02.15 |
댓글