키베이루's diary

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

알고리즘/Greedy

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

키베이루 2022. 5. 31. 05:09

1) 문제설명

백준 Online Judge 2847번 게임을 만든 동준이

https://www.acmicpc.net/problem/2847

 

2847번: 게임을 만든 동준이

학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어

www.acmicpc.net

 

2) 해결방법

반복문을 2개 이용하여 입력받은 배열이 오름차순이 될 때까지 뒤에서부터 1씩 빼주고 그 과정을 진행할 때마다 카운트를 +1씩 늘려준다.

이후 카운트를 출력한다.

 

3) 코드

#include<iostream>
#include<queue>
#include<deque>
#include<string.h>
#include<math.h>
#include<cmath>
#include<stack>
#include<algorithm>

using namespace std;
long long dp[1000001];

int main() {
	int n;
	int* arr;
	cin >> n;
	arr = (int*)malloc(sizeof(int) * n);
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
	}
	int cnt = 0;
	for (int i = n-1; i >= 0; i--) {
		while (arr[i-1] >= arr[i]) {
			arr[i-1] = arr[i-1] - 1;
			cnt++;
		}
	}
	cout << cnt;
	
}
// 5 5 5 -> 4 5 5 -> 4 4 5 -> 3 4 5
// 5 3 7 5 -> 2 3 4 5
// 1 2 3 188 -> 
// 5 9 4 8 -> 5 8 4 8 -> 5 7 4 8 -> 5 6 4 8 -> 5 5 4 8 -> 5 4 4 8 ->

처음에 문제를 잘못 이해해서 오름차순인 배열이 하나씩 차이 나야 된다고 생각했다.

문제를 다시 보고 수정했다.

Comments