본문 바로가기

백준

[백준] 9465 스티커 [자바]

 

 


https://velog.io/@yanghl98/%EB%B0%B1%EC%A4%80-9465-%EC%8A%A4%ED%8B%B0%EC%BB%A4-JAVA

 

[백준] 9465 : 스티커 (JAVA)

문제 > BOJ 9465 : 스티커 - https://www.acmicpc.net/problem/9465 풀이 뗄 수 있는 스티커의 점수의 최댓값을 구하는 문제. 한 스티커를 떼면 주변에 붙어있는 스티커들은 망가져 사용할 수 없다. 처음엔 점수

velog.io

 

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static int[][] xy;
	static int n;
	static int[][] dp;
 	public static void main(String arg[]) throws IOException {
 		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 		StringBuilder sb = new StringBuilder();
 		int T = Integer.parseInt(br.readLine());
 		while(T --> 0) {		
 			n = Integer.parseInt(br.readLine());
 			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 			xy = new int[2][n];
 			dp = new int[2][n];
 			for(int i = 0; i < n; i++) {
 				xy[0][i] = Integer.parseInt(st.nextToken());
 			}
 			st = new StringTokenizer(br.readLine(), " ");
 			for(int i = 0; i < n; i++) {
 				xy[1][i] = Integer.parseInt(st.nextToken());
 			}
 			if(n == 1) {
 				int result = Math.max(xy[0][0], xy[1][0]);
 				sb.append(result).append('\n');
 			}
 			else {
 				dp[0][0] = xy[0][0];
 				dp[1][0] = xy[1][0];
 				dp[0][1] = dp[1][0] + xy[0][1];
 				dp[1][1] = dp[0][0] + xy[1][1];
 				for(int i = 2; i < n; i++) {
 					dp[0][i] = Math.max(dp[1][i-1], dp[1][i-2]) + xy[0][i];
 					dp[1][i] = Math.max(dp[0][i-1], dp[0][i-2]) + xy[1][i];
 				}
 				int result = Math.max(dp[0][n-1], dp[1][n-1]);
 				sb.append(result).append('\n');
 			}
 		}
 		System.out.println(sb);
 	}
}