[Baekjoon] 9465λ²: μ€ν°μ»€
π₯ λ¬Έμ
https://www.acmicpc.net/problem/9465
π μ€κ³
μ²μμ μ μ΄μμ μ΄λ€ νμ μ¬μ©νλμ§μ λ°λΌ νμ μΆκ°νλ λ°©μμ μ¬μ©νλ €κ³ μκ°ν΄λ³΄μλλ°, 2^100000μΌλ‘ μκ° μ΄κ³Όκ° λ°μν κ²μΌλ‘ μκ°λμ΄ μ μΈνμλ€.
μ½κ² λ€μ΄λλ―Ή νλ‘κ·Έλλ°μ μ΄μ©νμ¬ ν΄κ²°ν μ μλ€. νμ¬ μ΄μμ 0νμ μ¬μ©ν κ²μ΄λΌλ©΄, μ μ΄μμλ 1ν λλ μ무κ²λ μ¬μ©νμ§ μμμ λμ κ° μ€ μ΅λκ°μ λν΄μΌ νλ€. μ무 κ²λ μ¬μ©νμ§ μμμ λλ μΈλ±μ€ 2μ μ μ₯νμλ€. νμ¬ μ΄μμ 1νμ μ¬μ©ν κ²μ΄λΌλ©΄, μ μ΄μμλ 0ν λλ μ무κ²λ μ¬μ©νμ§ μμμ λμ κ° μ€ μ΅λκ°μ λν΄μΌ νλ€ νμ¬ μ΄μμ μ무κ²λ μ¬μ©νμ§ μμ κ²μ΄λΌλ©΄, μ μ΄μμ 0νμ μ¬μ©μ μ¬μ©νμ λμ 1νμ μ¬μ©νμ λ μ€ ν° κ°μ μ μ₯νλ©΄ λλ€.
π νμ΄
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int t, n;
vector<vector<int>> stickers(2, vector<int>(100000));
vector<vector<int>> dp(100000, vector<int>(3));
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin >> t;
for (int k = 0; k < t; k++) {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> stickers[0][i];
}
for (int i = 0; i < n; i++) {
cin >> stickers[1][i];
}
dp[0][0] = stickers[0][0];
dp[0][1] = stickers[1][0];
for (int i = 1; i < n; i++) {
dp[i][0] = max(dp[i - 1][1], dp[i - 1][2]) + stickers[0][i];
dp[i][1] = max(dp[i - 1][0], dp[i - 1][2]) + stickers[1][i];
dp[i][2] = max(dp[i - 1][0], dp[i - 1][1]);
}
int result = 0;
for (int i = 0; i < 3; i++) {
result = max(result, dp[n - 1][i]);
}
cout << result << "\n";
}
return 0;
}