재귀 함수를 이용해 heights 배열을 루프 돌면서 최대 값과 최소 값을 고르고 덤프를 수행한다.
주어진 횟수만큼 수행했다면 heights 배열의 최대 값과 최소 값의 차를 리턴한다.
#include <iostream>
#include <ios>
#include <algorithm>
using namespace std;
int dumpCnt, heights[100];
int minVal, maxVal, minIdx, maxIdx, cnt;
int getResult(int cnt);
int main() {
cin.tie(0); ios::sync_with_stdio(0);
for (int tc = 1; tc <= 10; tc++) {
cnt = 1;
cin >> dumpCnt;
for (int i = 0; i < 100; i++) cin >> heights[i];
cout << '#' << tc << ' ' << getResult(cnt) << "\n";
}
return 0;
}
int getResult(int cnt) {
minVal = 2e9, maxVal = -2e9;
for (int i = 0; i < 100; i++) {
minVal = min(minVal, heights[i]);
if (minVal == heights[i]) minIdx = i;
maxVal = max(maxVal, heights[i]);
if (maxVal == heights[i]) maxIdx = i;
}
heights[maxIdx]--; heights[minIdx]++;
if (cnt == dumpCnt) {
minVal = 2e9, maxVal = -2e9;
for (int i = 0; i < 100; i++) {
minVal = min(minVal, heights[i]);
maxVal = max(maxVal, heights[i]);
}
return maxVal - minVal;
}
getResult(cnt + 1);
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum (0) | 2019.04.29 |
---|---|
SW 문제해결 기본 - Array 2 (0) | 2019.04.29 |
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2019.04.27 |
SW 문제해결 기본 - Array 1 (0) | 2019.04.27 |
[SWEA] 1289. 원재의 메모리 복구하기 (0) | 2019.04.27 |
댓글