hades

[Baekjoon] 9465๋ฒˆ: ์Šคํ‹ฐ์ปค ๋ณธ๋ฌธ

๐Ÿ‘Š PS/Algorithm

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

hades1 2024. 8. 11. 16:56

๐Ÿฅ… ๋ฌธ์ œ

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;
}