코드
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int N, T;
int sticker[2][100010];
int dp[2][100010];
cin >> T;
while(T!=0){
T--;
cin >> N;
for(int i = 0; i < 2; i++){
for(int j = 0; j < N; j++){
cin >> sticker[i][j];
}
}
dp[0][0] = sticker[0][0];
dp[1][0] = sticker[1][0];
int a;
for(int j = 2; j < 2*N; j++){
if(j%2 == 0){
a = 0;
dp[a][j/2] = max(dp[1][j/2-1] + sticker[a][j/2], dp[a][j/2-1]);
}
else{
a = 1;
dp[a][j/2] = max(dp[0][j/2-1] + sticker[a][j/2], dp[a][j/2-1]);
}
}
cout << max(dp[0][N-1],dp[1][N-1]) << "\n";
}
return 0;
}
알게된 점
1트만에 풀었어요 !!
점화식을 잘 생각해서 풀면 됩니다!!
'하루하나코딩' 카테고리의 다른 글
백준 9461 : 파도반 수열 c++ (0) | 2023.01.12 |
---|---|
백준 2293 : 동전 1 c++ (0) | 2023.01.11 |
백준 2579 : 계단 오르기 c++ (0) | 2023.01.06 |
백준 5014번 : 스타트링크 c++ (0) | 2023.01.05 |
백준 2468번 : 안전영역 c++ (0) | 2023.01.05 |