NOTE/BAEKJOON
2156 포도주 시식
m-inz
2022. 3. 21. 00:53
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.IOException;
public class main {
static int[] dp;
static int[] score;
static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
N = Integer.parseInt(br.readLine());
dp= new int[N+1];
score = new int[N+1];
for(int i=1;i<=N; i++) {
score[i]= Integer.parseInt(br.readLine());
}
if(N==1) {
bw.write(score[1]+"\n");
bw.flush();
bw.close();
return;
}
dp[1]=score[1];
dp[2]=score[1]+score[2];
for(int i=3;i<=N; i++) {
dp[i] = Math.max(dp[i-1],Math.max(dp[i-2]+score[i],dp[i-3]+score[i]+score[i-1]));
}
bw.write(dp[N]+"\n");
bw.flush();
bw.close();
}
}
바로 계단오르기 문제가 떠올랐다
그래서 전에 풀었던 방식으로 풀려고 했는데 테스트케이스는 맞는데 계속 틀렸다고 해서 보니까
0번 마신 경우를 고려안했다. 난 1번과 2번 마신 경우만 고려했던 것 ,,,,
근데 score 배열 쓰는게 훨 간단해서,, 방법을 바꿨다.. 다들 score배열 만들어서 하는 이유가 있었다 흑