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배열 만들어서 하는 이유가 있었다 흑