[C++]백준2847번 게임을 만든 동준이

less than 1 minute read

오늘은 백준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;
}