โ 10826 ํผ๋ณด๋์น ์ 4 โ
n=int(input())
def fibo(n):
if n<2:return n
a,b=0,1
for _ in range(2,n+1):
a,b=b,a+b
return b
print(fibo(n))
๐ ์ ํ์ ์ธ DP ํผ๋ณด๋์น ์ ์๊ณ ๋ฆฌ์ฆ. ์ด ๋, ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ์ํด ๋ ๋ณ์ a, b๋ง ์ค์ ํ๊ณ a+b๋ ๊ธฐ์กด a์ ๋ฎ์ด์ ๋ฉ๋ชจ๋ฆฌ ํจ์จ ๊ณ ๋ ค. ์ด ๋ถ๋ถ๋ง ์ฃผ์
โ 10211 Maximum Subarray โ
import sys
input=sys.stdin.readline
T=int(input())
for _ in range(T):
N=int(input())
arr=list(map(int,input().split()))
if arr[0]<0:
dp=(arr[0],arr[0])
else:
dp=(arr[0],0)
for i in range(1,N):
dp=(max(dp[0]+arr[i],arr[i]),max(dp))
print(max(dp))
๐ DP ๊ธฐ๋ฒ ์ฌ์ฉํ ๋, ํด๋น ์์๊ฐ ๋ฐ๋์ ๋ค์ด๊ฐ ์์ ๋์ ์๋ ๋ ๋๊ฐ์ง ์ผ์ด์ค๋ก ๋๋๋ค. ๋ฐ๋์ ๋ค์ด๊ฐ ์์ ๋๋ max(์ ์์๊ฐ ํฌํจํ์ ๋ + ํด๋น ์์, ํด๋น์์๋ง) ์ด๋ ๊ฒ ๊ตฌํ๋ฉด ๋๋ค. ๋ค์ด๊ฐ ์์ง ์์ ๋๋, ์ ์์ dp ๋ ๊ฐ์ค ์ต๋๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ.
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Implementation&Simulation Intermediate II - 3 Solvedโ (0) | 2024.08.29 |
---|---|
โ Stack & Queue & Deque Intermediate II - 3 Solvedโ (0) | 2024.05.26 |
โ BFS&DFS Upper-Intermediate I - 16 Solvedโ (1) | 2024.05.12 |
โ Two-Pointers Upper-Intermediate I - 6 Solvedโ (1) | 2024.02.11 |
โ Backtracking Upper-Intermediate I - 9 Solvedโ (0) | 2024.01.20 |
๋๊ธ