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

1. 문제

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

 

9465번: 스티커

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

www.acmicpc.net

 

2. 풀이

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

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

 

<cpp />
#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

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