728x90

https://www.acmicpc.net/problem/9465

 

9465번: 스티커

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의

www.acmicpc.net

 

 

풀이)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Main_BJ_9465_스티커 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        int t = Integer.parseInt(br.readLine());
        for(int tc=0; tc<t; tc++){
           int n = Integer.parseInt(br.readLine());
           int[][] sticker = new int[2][n];
           int[][] dp = new int[2][n+1];
           for(int i=0; i<2; i++){
               st = new StringTokenizer(br.readLine());
               for(int j=0; j<n; j++){
                   sticker[i][j] = Integer.parseInt(st.nextToken());
               }
           }

           int max;
           dp[0][1] = sticker[0][0];
           dp[1][1] = sticker[1][0];
           for(int i=2; i<=n; i++){
               dp[0][i] = Math.max(dp[1][i - 1], dp[1][i - 2]) + sticker[0][i-1];
               dp[1][i] = Math.max(dp[0][i - 1], dp[0][i - 2]) + sticker[1][i-1];
           }
           max = Math.max(dp[0][n], dp[1][n]);
           System.out.println(max);
        }//test case
    }//main

}

처음에는 완탐인줄 알고 pq이용해서 풀다가 도저히 안 될것 같아서 찾아봤다.

dp더라;;ㅎㅎ

 

이 문제는 결국 대각선을 봐야한다.

0번째 행이면, 1번째 행의 i-1열과 i-2열까지의 dp중에서 가장 큰 값을,

1번째 행이면, 0번째 행의 i-1열과 i-2열까지의 dp중에서 가장 큰 값을 택해서 스티커의 현재 위치와 더해주면 된다.

 

따라서 점화식을 세우면, 아래와 같다.

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

dp문제 다른 것 풀어봐야지...

 

 

참고한 블로그

https://propercoding.tistory.com/14

 

[백준] 9465번 : 스티커 – JAVA [자바]

https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며,

propercoding.tistory.com

 

 

728x90

'코테 > 백준' 카테고리의 다른 글

백준 9012 괄호(JAVA)  (1) 2023.03.13
백준 2775 부녀회장이 될테야(JAVA)  (0) 2023.03.12
백준 2751 수 정렬하기2(JAVA)  (0) 2023.03.11
백준 2407 조합(JAVA)  (0) 2023.03.09
백준 13549 숨바꼭질3(JAVA)  (1) 2023.03.08

+ Recent posts