https://www.acmicpc.net/problem/9465
9465번: 스티커
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의
www.acmicpc.net
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
static int T, N;
static int[][] input, dp;
public static void main(String[] args) throws Exception {
T = Integer.parseInt(br.readLine());
for (int tc = 0; tc < T; tc++) {
N = Integer.parseInt(br.readLine());
input = new int[2][N + 1];
dp = new int[2][N + 1];
for (int i = 0; i < 2; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 1; j <= N; j++) {
input[i][j] = Integer.parseInt(st.nextToken());
}
} // end of input
dp[0][1] = input[0][1];
dp[1][1] = input[1][1];
for (int i = 2; i <= N; i++) {
dp[0][i] = Math.max(Math.max(dp[0][i - 1], dp[0][i - 2] + input[0][i]), Math.max(dp[1][i - 1] + input[0][i], dp[1][i - 2] + input[0][i]));
dp[1][i] = Math.max(Math.max(dp[1][i - 1], dp[1][i - 2] + input[1][i]), Math.max(dp[0][i - 1] + input[1][i], dp[0][i - 2] + input[1][i]));
}
sb.append(Math.max(dp[0][N], dp[1][N])).append("\n");
}
System.out.print(sb);
}
}
'OJ' 카테고리의 다른 글
[BOJ] 3048 개미 (JAVA) (0) | 2023.04.11 |
---|---|
[BOJ] 2240 자두나무 (JAVA) (0) | 2023.04.10 |
[BOJ] 17391 무한부스터 (JAVA) (0) | 2023.04.08 |
[BOJ] 4883 삼각 그래프 (JAVA) (0) | 2023.04.07 |
[BOJ] 11723 집합 (JAVA) (0) | 2023.04.06 |