https://www.acmicpc.net/problem/9465
9465번: 스티커
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의
www.acmicpc.net
> 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/*
* 백준 9465 스티커
* #골드5
* #DP
*/
public class boj_9465 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
while(T-- > 0) {
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[2][n+1]; // 1, 2, 3, 4, ,, n 까지 편의상쓰기위함
int[][] dp = new int[2][n+1];
// 초기화
for(int i = 0; i < 2; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for(int j = 1; j <= n; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
// 맨 앞 초기화
dp[0][1] = arr[0][1];
dp[1][1] = arr[1][1];
// DP로 최댓값 구하기
for(int k = 2; k <= n; k++) {
dp[0][k] = Math.max(dp[1][k-1], dp[1][k-2]) + arr[0][k];
dp[1][k] = Math.max(dp[0][k-1], dp[0][k-2]) + arr[1][k];
}
System.out.println(Math.max(dp[0][n], dp[1][n]));
}
}
}
'PS > BOJ' 카테고리의 다른 글
백준 5585 거스름돈 / JAVA (0) | 2023.04.19 |
---|---|
백준 1331 나이트투어 / JAVA (0) | 2023.04.19 |
백준 1251 단어 나누기 / JAVA (0) | 2023.04.14 |
백준 5341 Pyramids / JAVA (1) | 2023.04.12 |
백준 2037 문자메시지 / JAVA (0) | 2023.04.11 |
댓글