https://www.acmicpc.net/problem/9465
9465๋ฒ: ์คํฐ์ปค
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์๋ n (1 ≤ n ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ๋ ์ค์๋ n๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์ ์๋ ๊ทธ ์์น์ ํด๋นํ๋ ์คํฐ์ปค์
www.acmicpc.net
์ด๋ป๊ฒ ์ ๊ทผํด์ผํ ์ง ๊ฐ์ด ์กํ์ง ์์ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
"""
๋ฌธ์ ์ดํด :
๊ฒฝ์ฐ 1) ์ ์๋
dp[0][i] = dp[0][i] + max(dp[1][i-1] , dp[1][i-2])
dp[1][i] = dp[1][i] + max(dp[0][i-1], dp[0][i-2])
"""
t = int(input())
for _ in range(t):
lst = []
n = int(input()) # ์ด
lst.append(list(map(int, input().split())))
lst.append(list(map(int, input().split())))
if n == 1:
print(max(lst[0][0],lst[1][0]))
continue
if n == 2:
print(max(lst[0][0] + lst[1][1], lst[1][0]+lst[0][1]))
continue
lst[0][1] += lst[1][0]
lst[1][1] += lst[0][0]
for i in range(2, n):
lst[0][i] = lst[0][i] + max(lst[1][i-1] , lst[1][i-2])
lst[1][i] = lst[1][i] + max(lst[0][i-1], lst[0][i-2])
print(max(lst[0][n-1],lst[1][n-1]))
์ ๊ทผ๋ฒ์ ์ฐธ๊ณ ํ์๋๋ฐ, ๋ ์ ์ด๋ฐ ๋ฐฉ๋ฒ์ ์๊ฐํ์ง ๋ชปํ๊ฑด์ง ์กฐ๊ธ ํํ์๋ค..
๋ฐ๋ก ์ฝ๋๋ฅผ ์์ฑํ์๋๋ฐ, 100ํผ์ผํธ์์ ๋ฐํ์์ด ๋ฐ์ํ์ฌ n=1,n=2์ผ ๋๋ฅผ ๋ฐ๋ก ์์ฑํด์ฃผ๋ ์ฑ๊ณตํ์๋ค
'์ฝํ ์ค๋น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
<stack> ๋ฐฑ์ค 9012๋ฒ. ๊ดํธ (์ค๋ฒ 4) (0) | 2023.01.11 |
---|---|
<dp> 1932๋ฒ. ์ ์ ์ผ๊ฐํ (์ค๋ฒ 1) (0) | 2023.01.11 |
<dp> ๋ฐฑ์ค 4097๋ฒ. ์์ต (์ค๋ฒ 2) (0) | 2023.01.10 |
<dp> ๋ฐฑ์ค 11722๋ฒ. ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด (0) | 2023.01.10 |
<dp> ๋ฐฑ์ค 1149๋ฒ. rgb๊ฑฐ๋ฆฌ (์ค๋ฒ 1) (0) | 2023.01.09 |