์ฝ”ํ…Œ์ค€๋น„

<dp> 9465๋ฒˆ. ์Šคํ‹ฐ์ปค (์‹ค๋ฒ„ 1)

์š”๋Œœ๋‹ค 2023. 1. 11. 14:46

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์ผ ๋•Œ๋ฅผ ๋”ฐ๋กœ ์ž‘์„ฑํ•ด์ฃผ๋‹ˆ ์„ฑ๊ณตํ•˜์˜€๋‹ค