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

문제 링크: 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;
}
댓글남기기