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);
}
}
'백준' 카테고리의 다른 글
[백준] 1007 벡터 매칭 [자바] (0) | 2022.08.17 |
---|---|
[백준] 1865 웜홀 [자바] (0) | 2022.07.11 |
[백준] 2096 내려가기 [자바] (0) | 2022.06.17 |
[백준] 10775 공항 [자바] (0) | 2022.06.07 |
[백준] 18352 특정 거리의 도시 찾기 [자바] (0) | 2022.05.26 |