728x90
반응형
문제
https://www.acmicpc.net/problem/2847
해설
이 문제는 가장 마지막 레벨의 점수가 가장 높도록 만들어야 하는 문제이다.
'점수를 내리는 것을 최소한'으로 하려면 가장 높은 점수부터 1점씩만 차이가 나게 하면 된다.
마지막 레벨부터 시작해서 이전 레벨이 다음 레벨보다 점수가 높을 때,
높은 점수 - 낮은 점수 + 1을 해주면
높은 점수에서 빼야 할 점수를 알 수 있다.
코드
-파이썬
#백준 2847(게임을 만든 동준이)
n = int(input()) #레벨의 수
level = []
res = 0
sum = 0
for i in range(n):
level.insert(i, int(input()))
for j in range(n - 1, 0, -1):
if level[j] <= level[j - 1]:
res = level[j - 1] - level[j] + 1
level[j - 1] = level[j - 1] - res
sum += res
print(sum)
-자바
//백준 2847(게임을 만든 동준이)
import java.util.*;
import java.io.*;
public class Boj_2847 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine()); //레벨 수
int[] level = new int[n];
int cnt = 0;
int sum = 0;
for(int i = 0; i < n; i++) {
level[i] = Integer.parseInt(br.readLine()); //레벨 별 점수
}
for(int j = n - 1; j > 0 ; j--) {
if(level[j] <= level[j - 1]) {
cnt = level[j - 1] - level[j] + 1;
level[j - 1] = level[j - 1] - cnt;
sum += cnt;
}
}
System.out.println(sum);
}
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[파이썬] BOJ_1758(알바생 강호) (0) | 2021.02.12 |
---|---|
[파이썬, 자바] BOJ_2217(로프) (0) | 2021.02.11 |
[파이썬, 자바] BOJ_2752(세수정렬) (0) | 2021.02.08 |
[파이썬, 자바] BOJ_11256(사탕) (0) | 2021.02.03 |
[파이썬, 자바] BOJ_18238(ZOAC 2) (0) | 2021.02.02 |