728x90
출처-https://www.acmicpc.net/problem/2579
728x90
내가 푼 방식 :
dp[i-3]+arr[i-1]+arr[i]와 dp[i-2]+arr[i] 중에 큰 것을 비교
둘 중 큰 것을 dp[i]에 넣는다.
그리고 dp[i-1]과 dp[i]을 비교.
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int arr[]=new int[n+1];
long dp[]=new long[n+1];
for (int i=1;i<=n;i++)
arr[i]=scan.nextInt();
dp[1]=arr[1];
if (n>=2)
dp[2]=dp[1]+arr[2];
for (int i=3;i<=n;i++) {
dp[i]=Math.max(dp[i-2]+arr[i],dp[i-3]+arr[i-1]+arr[i]);
}
System.out.println(dp[n]);
}
}
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 2133] 타일 채우기 (java) (0) | 2020.07.29 |
---|---|
[백준, BOJ 1699] 제곱수의 합 (java) (0) | 2020.07.29 |
[백준, BOJ 1912] 연속합 (java) (0) | 2020.07.29 |
[백준, BOJ 2156] 포도주 시식 (java) (0) | 2020.07.29 |
[백준, BOJ 9465] 스티커 (java) (0) | 2020.07.29 |