[백준/c++] 2847번: 게임을 만든 동준이

somyeong·2022년 6월 8일
0

백준

목록 보기
40/45

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

🌱 문제


🌱 풀이

앞 레벨의 점수가 뒤 레벨의 점수보다 최소 1은 작아야한다
높은 레벨 인덱스부터 거꾸로 for문을 돌면서 i-1번 레벨의 점수가 i번 레벨의 점수보다 높거나 같으면 낮아질때까지 1씩 빼주면서 빼는 횟수를 세준다.
총 빼준횟수의 합이 정답인 answer이 된다.


🌱 코드

//2847. 게임을 만든 동준이
/*
풀이
앞 레벨의 점수가 뒤 레벨의 점수보다 최소 1은 작아야한다
높은 레벨 인덱스부터 거꾸로 for문을 돌면서
i-1번 레벨의 점수가 i번 레벨의 점수보다 높거나 같으면 낮아질때까지 1씩 빼주면서 빼는 횟수를 세준다.
총 빼준횟수의 합이 정답인 answer이 된다.
*/

#include <iostream>
using namespace std;

int n;
int arr[101];
int answer;

int main(){
    cin>>n;
    for(int i=0; i<n ;i++){
        cin>>arr[i];
    }

    for(int i=n-1; i>0; i--){
        if(arr[i-1]>=arr[i]){ //이전 레벨의 점수가 다음레벨의 점수보다 크거나 같으면
            while(arr[i-1]>=arr[i]){ // 작아질때까지 1씩 빼주고, 몇번 뺏는지 횟수 세주기
                arr[i-1]--;
                answer+=1;
            }
        }
    }
    cout<<answer<<"\n";

}
profile
공부한 내용 잊어버리지 않게 기록하는 공간!

0개의 댓글