[C++]백준2847번 게임을 만든 동준이
오늘은 백준2847번 게임을 만든 동준이 문제를 풀어보도록 하자.
그리디 문제로 코드 수도 얼마 나오지 않는 쉬운 문제 되시겠다. :)
문제는 다음과 같다.
[접근법]
1. 우선 난이도 순으로 배치가 되어 있기 때문에 난이도가 높은 것부터 차례대로 배열에 저장한다.
2. 기준 인덱스의 다음 인덱스와 크기 비교 후, 만일 난이도가 낮은데 점수가 높다면 차이 + 1 만큼 result에 누적 합을 해준다.
3. 만일 난이도가 낮은데 점수 또한 낮다면 그냥 패스하면 되는 쉬운 문제이다.
[코드]
#include <iostream>
using namespace std;
int main() {
int n, result = 0;
int arr[100];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[n - i - 1];
}
for (int i = 0; i < n-1; i++) {
if (arr[i] <= arr[i + 1]) {
result += (arr[i + 1] - arr[i] + 1);
arr[i + 1] -= (arr[i + 1] - arr[i] + 1);
}
}
cout << result << '\n';
return 0;
}