Algorithm&Problem/[Problems] SWEA
[D3] 1208. Flatten
마쏘
2020. 7. 25. 11:27
입력)
1이상 100이하인 100개의 height이 주어진다.
덤프 횟수는 1이상 1000이하로 주어진다.
총 10개의 테스트 케이스가 주어지며,
[ 덤프 횟수 + 100개의 높이 ] 형식으로 들어온다.
출력)
#부호 최고점 - 처저점의 높이 차
입, 출력 분석)
width가 100이므로 배열의 크기도 100이다.
예시 분석)
(생략)
핵심)
최고점과 최저점을 빠르게 찾기 위해
height가 저장된 배열과 max값, min값의 index의 개념을 잘 알면 된다.
실수)
printf인데 scanf 로 적어서 출력이 안 되는 황당한 실수를 했다.
구현)
#include<stdio.h>
using namespace std;
int main(int argc, char** argv) {
int test_case;
for (test_case = 1; test_case <= 10; ++test_case) {
int heights[100] = {0,};
int dump_cnt = 0, diff = 0;
int maxIdx = 0, minIdx = 0;
scanf("%d", &dump_cnt);
for (int w = 0; w < 100; w++){
scanf("%d", &heights[w]);
if(heights[maxIdx] < heights[w]) maxIdx = w;
if(heights[minIdx] > heights[w]) minIdx = w;
}
for (int i = 0; i < dump_cnt; i++){
--heights[maxIdx];
++heights[minIdx];
for (int w = 0; w < 100; w++) {
if (heights[maxIdx] < heights[w]) maxIdx = w;
if (heights[minIdx] > heights[w]) minIdx = w;
}
}
diff = heights[maxIdx] - heights[minIdx];
printf("#%d %d\n", test_case, diff);
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}