백준 9465 - 스티커
Updated:
Java
9465 번 - 스티커
문제
접근 방법
점화식은 다음과 같다.
dp[0][i] = Math.max(dp[1][i - 1], dp[1][i - 2]) + stick[0][i];
dp[1][i] = Math.max(dp[0][i - 1], dp[0][i - 2]) + stick[1][i];
코드
import java.util.*;
import java.io.*;
public class Main {
static int n, tc, result;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stk;
tc = stoi(br.readLine());
int[][] stick;
int[][] dp;
while(tc-- != 0) {
n = stoi(br.readLine());
stick = new int[2][n + 1];
dp = new int[2][n + 1];
for(int i = 0; i < 2; i++) {
stk = new StringTokenizer(br.readLine());
for(int j = 1; j <= n; j++) {
stick[i][j] = stoi(stk.nextToken());
}
}
dp[0][1] = stick[0][1];
dp[1][1] = stick[1][1];
for(int i = 2; i <= n; i++) {
dp[0][i] = Math.max(dp[1][i - 1], dp[1][i - 2]) + stick[0][i];
dp[1][i] = Math.max(dp[0][i - 1], dp[0][i - 2]) + stick[1][i];
}
System.out.println(Math.max(dp[0][n], dp[1][n]));
}
br.close();
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}