danbibibi
article thumbnail
Published 2022. 12. 3. 08:47
BOJ 9465번: 스티커 문제 풀이/백준

문제

문제 바로가기> BOJ 9465번: 스티커

 

9465번: 스티커

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

www.acmicpc.net

 

풀이

다이나믹을 이용해서 푸는 문제였다. 

dp[i][j-1] + dp[1][j]dp[2][j] 보다 작은 경우 dp[1][j-2] + dp[2][j]를 해주는 것이 최대값이 된다. 이를 i가 1인 경우와 2인 경우로 나누어 각각의 위치에서 스티커의 점수를 더하여 얻을 수 있는 최대값을 구해주었다!

 

#include<iostream>
#define MAX 100001
using namespace std;

int N;
int dp[3][MAX];
int sticker[3][MAX];

void input(){
    cin >> N;
    for(int i=1; i<=2; i++){
        for(int j=1; j<=N; j++){
            dp[i][j] = 0;
            cin >> sticker[i][j];
        }
    }
}

void solution(){
    
    dp[1][1] = sticker[1][1];
    dp[2][1] = sticker[2][1];

    for(int j=2; j<=N; j++){
        dp[1][j] = max(dp[2][j-2], dp[2][j-1]) + sticker[1][j];
        dp[2][j] = max(dp[1][j-2], dp[1][j-1]) + sticker[2][j];
    }
    cout << max(dp[1][N], dp[2][N]) << "\n";
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    int T; cin >> T;
    while(T--){
        input();
        solution();
    }
}

'문제 풀이 > 백준' 카테고리의 다른 글

BOJ 2293번: 동전 1  (0) 2022.12.07
BOJ 10021번: Watering the Fields  (0) 2022.12.04
BOJ 2178번: 미로 탐색  (1) 2022.12.02
BOJ 1260번: DFS와 BFS  (0) 2022.12.02
BOJ 15591번: MooTube (Silver)  (1) 2022.12.02
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로