[BOJ] 백준 #2847. 게임을 만든 동준이 (C++)

최대 1 분 소요

🎨 문제

boj-2847

문제 링크: https://www.acmicpc.net/problem/2847

  • 알고리즘 분류: 그리디 알고리즘
  • 난이도: Silver Ⅳ



💬 풀이

걍 뒤에서부터 v[i] <= v[i-1]이면 v[i]가 더 커질 때까지 v[i-1]--; cnt++;하면 끝

근데 풀이랑 별개로 코드 짜면서 조심해야 됐던 부분은
처음 while문에서 N--해서 N값이 바꼈을 땐 나중에 i = N-1 등과 같이 N을 사용할 수 없다는 거!!!
아님그냥 이런거 중간에 까먹을 일도 없게 저 방식은 안 쓰는게 나을지도..?.



👩‍💻 코드

C++

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
using namespace std;

int main() {
	//freopen("input.txt", "rt", stdin);
	int N;
	cin >> N;
	vector<int> v;
	while (N--) {
		int n;
		cin >> n;
		v.push_back(n);
	}
	
	int cnt = 0;
	for (int i = v.size() - 1; i > 0; i--) {
		while (v[i] <= v[i - 1]) {
			v[i - 1]--;
			cnt++;
		}
	}
	cout << cnt;

	return 0;
}


댓글남기기