๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 9465๋ฒˆ - ์Šคํ‹ฐ์ปค

by dkswnkk 2021. 11. 10.

๋ฌธ์ œ

 

9465๋ฒˆ: ์Šคํ‹ฐ์ปค

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” n (1 ≤ n ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ๋‘ ์ค„์—๋Š” n๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ๊ฐ ์ •์ˆ˜๋Š” ๊ทธ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋Š” ์Šคํ‹ฐ์ปค์˜

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <algorithm>

using namespace std;

int dp[2][100001];
int arr[2][100001];

int main(){

    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int T; cin>>T;

    while(T--){

        int n; cin>>n;
        for(int i=0; i<2; i++){
            for(int k=0; k<n; k++){
                cin>>arr[i][k];
            }
        }

        dp[0][0] = arr[0][0];
        dp[1][0] = arr[1][0];
        dp[0][1] = arr[0][1]+dp[1][0];
        dp[1][1] = arr[1][1]+dp[0][0];

        for(int k=1; k<n; k++){
            dp[0][k] = max(dp[0][k-1],dp[1][k-1]+arr[0][k]);
            dp[1][k] = max(dp[1][k-1],dp[0][k-1]+arr[1][k]);
        }

        cout<<max(dp[0][n-1],dp[1][n-1])<<'\n';
    }
}

๋Œ“๊ธ€