Search
Duplicate
📗

게임을 만든 동준이

주차
문제번호
2847
언어
C++
티어
실버
유형
그리디
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

현재 기준에서 다음걸 비교하면서 크기가 더 크면 크기를 하나씩 줄이면서 모든 녀석들이 조건을 만족할때까지 계속 반복문을 돌린다

놓쳤던 부분

#include <stdio.h> int main(void) { int N, cnt=0; int Lv[100] = {0,}; scanf("%d", &N); for (int i=0; i<N; i++) { scanf("%d", &Lv[i]); } for (int i=N-1; i>0; i--) { if (Lv[i-1] < Lv[i]) { } else { cnt += Lv[i-1]-(Lv[i]-1); Lv[i-1] = Lv[i]-1; } } printf("%d", cnt); }
C
복사
더 간단한 로직

코드

2020 KB

0 ms

#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void) { int n; vector<int> level; int answer = 0; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; level.resize(n); for (int i = 0; i < n; i++) cin >> level[i]; int i = 0; int flagCount = 0; while (true) { if (level[i] >= level[i + 1]) { level[i]--; answer++; flagCount = 0; } else flagCount++; if (flagCount == n) break ; i++; if (i == n - 1) i = 0; } cout << answer; return (0); }
C++
복사