반응형
https://swexpertacademy.com/main/main.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 해결방법
정해진 횟수만큼 최대값은 -1 최소값은 +1 반복문을 돌리면서 최대값과 최소값의 차이가 1 이하이면 리턴하게 하는 방법이 가장 적절하다고 생각했다. 예외가 하나도 발생하지 않아서 생각보다 쉬운 문제였다.
2. 코드
#include <iostream>
#include <algorithm>
int total;
int ary[100];
int result;
using namespace std;
void check() {
int n = 0;
while (n < total) {
int max = *max_element(ary, ary + 100);
int min = *min_element(ary, ary + 100);
if (max - min <= 1) {
break;
}
else {
int maxindex = distance(ary, max_element(ary, ary + 100));
int minindex = distance(ary, min_element(ary, ary + 100));
ary[maxindex] = ary[maxindex] - 1;
ary[minindex] = ary[minindex] + 1;
}
n++;
}
}
int main()
{
for (int i = 0; i < 10; i++) {
cin >> total;
for (int j = 0; j < 100; j++) {
cin >> ary[j];
}
check();
result = *max_element(ary, ary + 100) - *min_element(ary, ary + 100);
cout << "#" << i + 1 << " " << result << endl;
}
}
반응형
'코딩테스트 > SW expert' 카테고리의 다른 글
[SW Expert] #1215 S/W 문제해결 기본 3일차 - 회문1 (0) | 2019.12.04 |
---|---|
[SW Expert] #2805 농작물 수확하기 (0) | 2019.12.02 |
[SW Expert] #1244 S/W 문제해결 응용 2일차 - 최대 상금 (0) | 2019.11.27 |
[SW Expert] #2806 N-Queen (0) | 2019.11.22 |
[SW Expert] #3752 가능한 시험점수 (0) | 2019.11.17 |