delpho
[실버3, DP] 백준 2579 - 계단 오르기 (자바) 본문
Think
1. 하 DP.... 정말 어렵다 문제에 주어진 조건을 성립하면서 DP로 푸려는 아이디어가 어려웠다.
2. https://st-lab.tistory.com/132 를 참고했다.
제출 코드 (Top-down)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class test {
static int n;
static int sequence[];
static Integer dp[];
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
public static void main(String[] args) throws IOException {
init();
progress();
}
private static void progress() {
System.out.println(recursion(n));
}
private static int recursion(int number) {
if(dp[number] == null){
dp[number] = Math.max(recursion(number-2), recursion(number-3) + sequence[number - 1]) + sequence[number];
}
return dp[number];
}
private static void init() throws IOException {
n = Integer.parseInt(br.readLine());
sequence = new int[n+1];
dp = new Integer[n+1];
for (int i = 1; i <= n; i++) {
sequence[i] = Integer.parseInt(br.readLine());
}
dp[0] = 0;
dp[1] = sequence[1];
if(n>=2){
dp[2] = sequence[1] + sequence[2];
}
}
}
제출코드 2 (bottom-up)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class test {
static int n;
static int sequence[];
static Integer dp[];
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
public static void main(String[] args) throws IOException {
init();
progress();
}
private static void progress() {
for (int i = 3; i <= n; i++) {
dp[i] = Math.max(dp[i-2], dp[i-3] + sequence[i-1]) + sequence[i];
}
System.out.println(dp[n]);
}
private static void init() throws IOException {
n = Integer.parseInt(br.readLine());
sequence = new int[n+1];
dp = new Integer[n+1];
for (int i = 1; i <= n; i++) {
sequence[i] = Integer.parseInt(br.readLine());
}
dp[0] = 0;
dp[1] = sequence[1];
if(n>=2){
dp[2] = sequence[1] + sequence[2];
}
}
}
'알고리즘 > DP' 카테고리의 다른 글
[실버1, DP] 백준 2156 - 포도주 시식 (자바) (0) | 2024.05.17 |
---|---|
[실버3, DP] 백준 1904 - 01타일 (자바) (0) | 2024.05.12 |
[실버2, DP] 백준 11053 - 가장 긴 증가하는 부분 수열 (자바) (0) | 2024.03.04 |
[실버3, DP] 백준 11726 - 2xn 타일링 (자바) (0) | 2024.03.03 |
[실버3, DP] 백준 1003 - 피보나치 함수 (자바) (0) | 2024.02.29 |