본문 바로가기

알고리즘

Boj 9465 c++ 스티커

#include<iostream>
using namespace std;
int cost[100001][2];
int dp[100001][2];//n번째의 위/아래까지 선택했을 경우의 점수
int t, n;
int main(){
    cin>>t;
    while(t--){
    cin>>n;
    for(int j=0; j<2; j++){
        for(int i=1; i<=n; i++){
        	cin>>cost[i][j];
        	}
        } dp[1][0]=cost[1][0];
          dp[1][1]=cost[1][1];
        for(int i=2; i<=n; i++){
            dp[i][0]=max(cost[i][0]+dp[i-2][1], max(dp[i-1][1]+cost[i][0], dp[i-1][0]));
            dp[i][1]=max(cost[i][1]+dp[i-2][0], max(dp[i-1][0]+cost[i][1], dp[i-1][1]));
        } cout<<max(dp[n][0], dp[n][1])<<"\n";
    }
}

현재자리 선택할때(두가지 경우 고려), 안할때(한가지 경우만 고려)

'알고리즘' 카테고리의 다른 글

Boj 11404 c++ 플로이드 워셜  (1) 2025.07.17
Boj 9251 c++ LCS  (0) 2025.07.16
Boj 1932 c++ 정수 삼각형  (0) 2025.07.15
Boj 15666 c++ N과 M(12)  (0) 2025.07.14
Boj 11660 c++ 구간 합 구하기 5  (0) 2025.07.14