반응형
#문제정보
출처 : www.acmicpc.net/problem/2847
난이도 : 실버4
분류 : 그리디(GREEDY) 알고리즘
#문제분석
레벨별로 점수를 부여하기 위해서는, 각 레벨의 점수가 오름차 순으로 주어져야 합니다.
단, 점수를 내리는것을 최소한으로 해야 하기 때문에, i-1번째 레벨의 점수가 i번째 레벨의 점수보다 높은 점수를 갖고 있다면, i번째 레벨의 점수 - 1 값을 i-1번째 레벨에 부여하면 됩니다.
따라서 저는 레벨의 점수를 갖고 있는 level 벡터의 마지막 값을 compare 점수에 초기화 한 뒤 반복문을 돌려서 뒤에서부터 차례로 검사했습니다.
int compare = level[N-1];
for (int i = N - 2 ; i >= 0 ; i--)
{
while (level[i] >= compare)
{
level[i]--;
res++;
}
compare = level[i];
}
#소스코드
#include <iostream>
#include <vector>
using namespace std;
vector<int> level;
int res;
int main()
{
int N;
cin >> N;
for (int i = 0 ; i < N ; i++)
{
int temp;
cin >> temp;
level.push_back(temp);
}
int compare = level[N-1];
for (int i = N - 2 ; i >= 0 ; i--)
{
while (level[i] >= compare)
{
level[i]--;
res++;
}
compare = level[i];
}
cout << res;
return 0;
}
반응형
'Archive2 > ProblemSolving' 카테고리의 다른 글
[C/C++] BOJ(백준) 2776 "암기왕" 문제 풀이 & 소스 코드 (feat. 이진탐색) (0) | 2021.05.13 |
---|---|
[C/C++] BOJ(백준) 11000 "강의실 배정" 문제 풀이 & 소스 코드 (0) | 2021.05.12 |
[C/C++] BOJ(백준) 1744 "수 묶기" 문제 풀이 & 소스 코드 (0) | 2021.05.09 |
[C/C++] BOJ(백준) 15903 "카드 합체 놀이" 문제 풀이 & 소스 코드 (0) | 2021.05.08 |
[C/C++] BOJ(백준) 1783 "병든 나이트" 문제 풀이 & 소스 코드 (0) | 2021.05.05 |