https://www.acmicpc.net/problem/2847
2847번: 게임을 만든 동준이
학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어
www.acmicpc.net
이 문제는 첫 번째 레벨부터 마지막 레벨까지 점수가 순차적으로 상승하도록 만들면 된다.
3
5
5
5
위 예제에서 5 5 5 는 3 4 5 가 되도록 하는데 이 때 첫 번째 5는 -2 , 두 번째 5는 -1 의 계산을 해야하므로 출력은 3이 된다.
어차피 마지막 레벨인 배열의 마지막 부분을 기준으로 한 단계씩 내리면서 점수를 차감해야 하기 때문에
기준이 되는 last 값은 arr[3] → arr[2] → arr[1] 순으로 되도록 하며
예를 들어 last 값이 arr[3] 일 때는 arr[2] 의 값이 arr[3] 보다 작아야 하므로 arr[i] < last 라는 조건을 두어 코드를 짜면 될 것 같다.
▶코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int arr[] = new int[N];
int cnt=0;
for(int i=0;i<N;i++){
st = new StringTokenizer(br.readLine());
arr[i]=Integer.parseInt(st.nextToken());
}
int last=0;
for(int i=N-2;i>=0;i--){
last = arr[i+1];
if(arr[i]<last){
continue;
}
else if(arr[i]>=last){
for(;;){
if(arr[i]<last){
break;
}
else{
arr[i]--;
cnt++;
}
}
}
}
System.out.println(cnt);
}
}
'알고리즘 > 백준 풀이(그리디)' 카테고리의 다른 글
백준 1105번 - 팔 (0) | 2024.02.03 |
---|---|
백준 11501번 - 주식 (1) | 2024.02.03 |
백준 1449번 - 수리공 항승 (1) | 2024.01.31 |
백준 1439번 - 뒤집기 (0) | 2024.01.26 |
백준 14916번 - 거스름돈 (0) | 2024.01.23 |