백준 9465 - 스티커

Updated:

Java

9465 번 - 스티커

문제

접근 방법

점화식은 다음과 같다.

dp[0][i] = Math.max(dp[1][i - 1], dp[1][i - 2]) + stick[0][i];
dp[1][i] = Math.max(dp[0][i - 1], dp[0][i - 2]) + stick[1][i];

코드

import java.util.*;
import java.io.*;

public class Main {
	static int n, tc, result;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringTokenizer stk;
    	tc = stoi(br.readLine());

    	int[][] stick;
    	int[][] dp;
    	while(tc-- != 0) {
    		n = stoi(br.readLine());
    		stick = new int[2][n + 1];
    		dp = new int[2][n + 1];

    		for(int i = 0; i < 2; i++) {
    			stk = new StringTokenizer(br.readLine());
    			for(int j = 1; j <= n; j++) {
    				stick[i][j] = stoi(stk.nextToken());
    			}
    		}

    		dp[0][1] = stick[0][1];
    		dp[1][1] = stick[1][1];

    		for(int i = 2; i <= n; i++) {
				dp[0][i] = Math.max(dp[1][i - 1], dp[1][i - 2]) + stick[0][i];
				dp[1][i] = Math.max(dp[0][i - 1], dp[0][i - 2]) + stick[1][i];
    		}

    		System.out.println(Math.max(dp[0][n], dp[1][n]));
    	}
    	br.close();
	}

	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}

총평

후기

개선할 점