PS/BOJ

백준 9465 스티커 / JAVA

얍연구소장 2023. 4. 17.

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

댓글