SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제:
주어진 횟수만큼 가장 높은 곳에 있는 칸을 가장 낮은 곳으로 옮깁니다(덤프). 작업이 끝난 후 가장 높은 곳과 가장 낮은 곳의 차이를 출력합니다. 이때 가장 높은 곳과 가장 낮은 곳의 차이가 0 또는 1이 되면 작업을 하지 않고, 그 상태에서의 차이를 출력합니다.
문제에서 테스트 케이스는 10번으로 주어졌고, 가로는 항상 100 세로 값의 범위는 1~100까지입니다. 작업 횟수인 덤프의 범위는 1~1000까지입니다.
#include<iostream>
#include<algorithm>
using namespace std;
int main(int argc, char** argv)
{
int test_case = 0, T = 0 ,answer = 0;
for(int i=0; i<10; i++){
cin >> test_case;
int temp[1000] = {0,};
for(T; T<test_case; T++) cin >> temp[T];
for(T; T<test_case; T++){
sort(temp, temp+test_case);
if (temp[test_case] - temp[T] < 1){
answer = temp[test_case] - temp[T];
break;
}
answer = temp[test_case] - temp[T] ;
temp[test_case]--;
temp[T]++;
}
cout << '#' << i+1 << ' '<< answer << endl;
}
return 0;
}
코드:
최대값과 최소값이 계속 변하기 때문에 덤프 횟수만큼 반복문을 돌 때 처음 시작 부분에서 정렬 되도록 했습니다.
최대값과 최소값이 1보다 작으면 그때의 차이를 답으로 저장하고, 반복문을 탈출합니다.
해당하지 않으면 break가 아니라 값에 변화를 주고 반복문을 계속 돌립니다.
-----------------------------------------------------------------------------------------------------------------------------------
아까처럼 답이 0으로 출력 되는데 집에서 확인 하겠습니다.
'알고리즘 > SW Expert Academy' 카테고리의 다른 글
201004 [S/W 문제해결 기본] 2일차 - Sum (C++) / 틀림 (0) | 2020.10.09 |
---|---|
200923 [SW Expert Academy] 지그재그 숫자 1986번(C++) (0) | 2020.09.23 |
200916 [S/W 문제해결 기본] 1일차 - 최빈수 구하기 / 실패 (0) | 2020.09.15 |