โ 17202 ํธ๋ํฐ ๋ฒํธ ๊ถํฉ โ
A=list(input())
B=list(input())
l=[]
for i in range(8):l.extend((int(A[i]),int(B[i])))
while len(l)>2:
L=len(l)
for j in range(L-1):l[j]=(l[j]+l[j+1])%10
del l[-1]
print(*l,sep='')
โ 16395 ํ์ค์นผ์ ์ผ๊ฐํ โ
n,k=map(int,input().split())
d=[0]*n
d[0]=1
if n==1:print(1)
else:
for i in range(1,n):
new=[]
new.append(1)
for j in range(i-1):
new.append(d[i-1][j]+d[i-1][j+1])
new.append(1)
d[i]=new
print(d[n-1][k-1])
๐ป ์ ํ์ ์ธ DP ๋ฌธ์ โ ํ์ค์นผ์ ์ผ๊ฐํ ์ธต ๊ฐ์์ ๋ง๊ฒ dp list๋ฅผ ๋ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ ํ ๋น / โก ๊ฐ ์ธต ๋ณ๋ก ์์ ์ธต์ ์ฐธ์กฐํด(๋ฐ๋ก ์ ๋ ์์์ ํฉ ๊ฒฐ๊ณผ) ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋์ → 2์ฐจ์ list ์์ฑ โข ์ฃผ์ด์ง ์ธต์, ์ฃผ์ด์ง ์์์ ์์๋ฅผ 2์ฐจ์ list์์ ์ถ๋ ฅ. ์ ์ธต์ ๋ ์์๋ฅผ ์ฐธ์กฐ๋ก ์๋ ์ธต์ ๋ง๋ค์ด๋๊ฐ๋ฏ๋ก bottom-up ์ํฅ์ dp ์ ํ. dp๋ ์ด๋ฏธ ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ๊ณ ํด ์ฝ๊ฒ ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ๋๊ฐ๋ฉด์, ์ฃผ์ด์ง ๋ฉ๋ชจ๋ฆฌ ๋ด์์ ๊ฒฐ๊ณผ๋ฅผ ์ฑ์ฐ๋ ์ ํ. ํ์ค์นผ์ ์ผ๊ฐํ์ ์ดํญ๊ณ์๋ฅผ ์ด์ฉํด ๊ณต์์ผ๋ก ๋ฐ๋ก ํ๋ฆฌ์ง๋ง, dp์ ์ ์์ ๋ง๊ฒ ํ์ด๋ด!
โ 15489 ํ์ค์นผ ์ผ๊ฐํ โ
R,C,W=map(int,input().split())
dp=[]
dp.extend(([1],[1,1]))
for i in range(2,R+W-1):
l=[]
l.append(1)
for j in range(1,i):
l.append(dp[i-1][j-1]+dp[i-1][j])
l.append(1)
dp.append(l)
ans=0
p=1
for k in range(R-1,R+W-1):
for t in range(C-1,C-1+p):
ans+=dp[k][t]
p+=1
print(ans)
๐ป ์ 16395 ๋ฌธ์ ๋๋ก ํ์ค์นผ ์ผ๊ฐํ์ dp๋ก ์์ฑํ ๋ค, R๋ฒ์งธ C๋ฒ์งธ ์๋ฅผ ์ผ๊ฐํ ์ ๊ผญ์ง์ ์ผ๋ก ํ๊ณ ๋ณ์ด W์ธ ์ ์ผ๊ฐํ ๋ด๋ถ์ ๋ชจ๋ ์์ ํฉ ๊ตฌํ๊ธฐ. ์ด์ค for๋ฌธ์ผ๋ก โ ๋จผ์ k iterator๋ก R์ธต๋ถํฐ R+W-1์ธต๊น์ง ํฉ์ ๊ตฌํด์ผ ํ๋ฏ๋ก ๋ฐฐ์ด index ๊ธฐ์ค R-1๋ถํฐ R+W-2๊น์ง, ์ฆ range(R-1,R+W-1) / โก ์ด์ ๊ฐ k์ธต์์ C๋ฒ์งธ๋ถํฐ ์ธต ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋ฉด์ 1๊ฐ, 2๊ฐ, 3๊ฐ ๋ํด์ง๋ฏ๋ก p iterator๋ฅผ ๋ฐ๋ก ์ค์ ํด range(C-1, C-1+p), p+=1
โ 11726 2xn ํ์ผ๋ง โ
n=int(input())
if n==1:print(1)
else:
dp=[0]*(n+1)
dp[1]=1
dp[2]=2
for i in range(3,n+1):
dp[i]=dp[i-1]+dp[i-2]
print(dp[n]%10007)
๐ป ์ ๋ฌธ์ dp์ ์ ํ์์ fibonacci์ ๊ฐ๋ค. a(n)์ 2xn ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์์ ํ์ผ์ ์ฑ์ฐ๋ ๊ฐ์๋ผ๊ณ ํ์ ๋, ์ ํ์์ ์ด์ ๊ฐ๋ค. a(n) = a(n-1) + a(n-2) (a(1) = 1, a(2) = 2. ๋ณ์ ๊ธธ์ด๊ฐ n-1์ผ ๊ฒฝ์ฐ 2x1 ์ง์ฌ๊ฐํ์ ์ถ๊ฐํ๋ 1๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ณ , ๋ณ์ ๊ธธ์ด๊ฐ n-2์ผ ๊ฒฝ์ฐ, 1x2 ์ง์ฌ๊ฐํ ๋๊ฐ๋ฅผ ๊ฐ๋ก๋ก ๋์์ ์ถ๊ฐํ๋ 1๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ๋ผ์ ๋ณ์ ๊ธธ์ด๊ฐ ๊ฐ๊ฐ n-1, n-2์ผ๋์ ๋ฐฉ๋ฒ์ ๋ํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค. dp-table์ ์ฒซ ์คํํธ๊ฐ ๋๊ธฐ ์ํ ์ด๊ธฐํญ๋ค์ ์ ์ค์ ๋ง ์ฃผ์
โ 11727 2xn ํ์ผ๋ง 2 โ
n=int(input())
if n==1:print(1)
else:
dp=[0]*(n+1)
dp[1]=1
dp[2]=3
for i in range(3,n+1):
dp[i]=dp[i-1]+2*dp[i-2]
print(dp[n]%10007)
๐ป ์ 11726 dp๋ฌธ์ ์์ 2x2 ์ ์ฌ๊ฐํ์ด ์ถ๊ฐ๋ ๋ฌธ์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด a(n-2)๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก 2xn ํ์ผ์ ์ฑ์ธ ์ ์์ผ๋ฏ๋ก ํด๋น ํญ๋ง 2๋ฅผ ๊ณฑํด ์ ํ์์ ์์ฑํ๋ฉด ๋๋ค. a(n)์ 2xn ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์์ ํ์ผ์ ์ฑ์ฐ๋ ๊ฐ์๋ผ๊ณ ํ์ ๋, ์ ํ์์ a(n) = a(n-1) + 2*a(n-2) (a(1) = 1, a(2) = 3). ๋ณ์ ๊ธธ์ด๊ฐ n-1์ผ ๊ฒฝ์ฐ 2x1 ์ง์ฌ๊ฐํ์ ์ถ๊ฐํ๋ 1๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ณ , ๋ณ์ ๊ธธ์ด๊ฐ n-2์ผ ๊ฒฝ์ฐ, 1x2 ์ง์ฌ๊ฐํ ๋๊ฐ๋ฅผ ๊ฐ๋ก๋ก ๋์์ ์ถ๊ฐ, 2x2 ์ ์ฌ๊ฐํ 1๊ฐ๋ฅผ ์ถ๊ฐํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ๋ผ์ ๋ณ์ ๊ธธ์ด๊ฐ ๊ฐ๊ฐ n-1, n-2์ผ๋์ ๊ฐ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค. (์ญ์ 11726 ์ ๋ฌธ์ ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๊ธฐํญ ์ฃผ์)
โ 1463 1๋ก ๋ง๋ค๊ธฐ โ
n=int(input())
dp=[0]*(n+1)
if n==1:print(0)
elif n==2:print(1)
else:
dp[2],dp[3]=1,1
for i in range(4,n+1):
a,b,c=1000001,1000001,1000001
if i%3==0:
a=dp[i//3]
if i%2==0:
b=dp[i//2]
c=dp[i-1]
dp[i]=min(a,b,c)+1
print(dp[n])
๐คก dp-table์ element๋ ๊ฐ๊ฐ ์ฐ์ฐ์ ํ๋ ํ์์ ์ต์๊ฐ. dp[n]์ ๊ธฐ์ค์ผ๋ก, dp[n//3], dp[n//2], dp[n-1]์์ ๊ฐ๊ฐ 3์ ๊ณฑํ๊ณ , 2๋ฅผ ๊ณฑํ๊ณ 1์ ๋ํ๋ 1๋ฒ์ ์ฐ์ฐ ์ค ์ต์๊ฐ ๊ฒฐ๊ณผ๋ก dp[n]์ ๋๋ฌ ๊ฐ๋ฅ. ์ ํ์์ ์ธ์ฐ๋ฉด a(n) = min(a(n//3), a(n//2), a(n-1) + 1)
โ 1904 01 ํ์ผ โ
N=int(input())
if N==1:print(1)
elif N==2:print(2)
else:
dp=[1,2]
for _ in range(N-2):
dp.append((dp[-2]+dp[-1])%15746)
print(dp[-1]%15746)
๐คก ํผ๋ณด๋์น ์์ด dp๋ฌธ์ . dp[x]์ธ ๊ธธ์ด๊ฐ x์ธ 2์ง ์์ด์ ๋ง๋ค ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ ๋งจ ์์ 1์ด ์ฌ ๊ฒฝ์ฐ dp[x-1], ๊ทธ๋ฆฌ๊ณ ๋งจ ์์ 00์ด ์ฌ ๊ฒฝ์ฐ dp[x-2]์ ๋ ๊ฐ์ง ์ํฉ๋ง ์กด์ฌํ๋ฏ๋ก ๊ฐ๋จํ๊ฒ dp[x] = dp[x-1] + dp[x-2]
โ 9461 ํ๋๋ฐ ์์ด โ
for _ in range(int(input())):
dp=[0,1,1,1,2,2,3,4,5]
N=int(input())
if N<=8:print(dp[N])
else:
dp.extend([0]*(N-8))
for i in range(9,N+1):
dp[i]=dp[i-1]+dp[i-5]
print(dp[N])
๐ป N์ด 9์ด์์ผ ๋ ๋ถํฐ ์ผ๊ฐํ์ ๋ณ์ ๊ธธ์ด๋ ๊ท์น์ ์์ P๊ฐ๊ณผ 5๊ณ๋จ ์์ P๊ฐ์ ๋ํ ๊ฒฐ๊ณผ์ด๋ค. ์ ํ์์ ์ ๋ฆฌํด๋ณด๋ฉด P(N) = P(N-1) + P(N-5) (N≥9). N์ด 8์ดํ์ผ ๊ฒฝ์ฐ P(N)์ N์ด 1์ผ ๋๋ถํฐ ์ฐจ๋ก๋๋ก 1, 1, 1, 2, 2, 3, 4, 5
โ 9095 1, 2, 3 ๋ํ๊ธฐ โ
for _ in range(int(input())):
dp=[0,1,2,4]
n=int(input())
if n<=3:print(dp[n])
else:
dp.extend([0]*(n-3))
for i in range(4,n+1):
dp[i]=dp[i-1]+dp[i-2]+dp[i-3]
print(dp[n])
๐ป n์ 1,2,3์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๊ฐ์ง์๋ฅผ a(n)์ด๋ผ๊ณ ํ๋ค๋ฉด, 1์ ๋บ ์์ ๊ฐ์ง์์์ 1์ ๋ํ๋ 1๊ฐ์ง ๊ฒฝ์ฐ, 2๋ฅผ ๋บ ์์ ๊ฐ์ง์์์ 2๋ฅผ ๋ํ๋ 1๊ฐ์ง ๊ฒฝ์ฐ, 3์ ๋บ ์์ ๊ฐ์ง์์์ 3์ ๋ํ๋ 1๊ฐ์ง ๊ฒฝ์ฐ๋ก ์ด 3๊ฐ์ง ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋ค. ์ฌ๊ธฐ์ ๋ง์ฝ 2๋ฅผ ๋บ ์์ ๊ฐ์ง์์์ 2๋ฅผ ๋ํ๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ, 1์ 2๋ฒ ๋ํ๋ ๊ฒฝ์ฐ๋ ๊ณ ๋ ค๋ ์ ์์ผ๋, ์ด๋ ์ด๋ฏธ 1์ ๋บ ์์ ๊ฐ์ง์์์ 1์ ๋ํ๋ ๊ฒฝ๋ก์ ์นด์ดํธ๋์์ผ๋ฏ๋ก ๋ฐฐ์ . 3์ ๋บ ๊ฒฝ์ฐ์ ์์์๋ ๊ณ ๋ ค. ์ ํ์์ ์ ๋ฆฌํ์๋ฉด a(n) = a(n-1) + a(n-2) + a(n-3) (a(1) = 1, a(2) = 2, a(3) = 4)
โ 15312 ์ด๋ฆ ๊ถํฉ โ
A=list(input())
B=list(input())
l=[]
lines='32123323322122122212111221'
alphas='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for i in range(len(A)):l.extend((int(lines[alphas.index(A[i])]),int(lines[alphas.index(B[i])])))
while len(l)>2:
L=len(l)
for j in range(L-1):l[j]=(l[j]+l[j+1])%10
del l[-1]
print(*l,sep='')
๐ป ์๋ก dp-table์ ๋ง๋ค๊ธฐ์๋ ์ต๋ 400๋ง๊น์ง list๊ฐ ๋์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก, ๊ธฐ์กด list์์ bottom-up ๋ฐฉ์์ผ๋ก dp-table์ updateํด ๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์งฐ์. ๋ ์์๋ฅผ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์ ์์๊ฐ๊ณผ ๋ฐ๊พธ๋ฉด์ ๊ณ์ updateํ๋ ์ญ์ ์ ํ์ ์ธ dp ๋ฌธ์
โ 14495 ํผ๋ณด๋์น ๋น์ค๋ฌด๋ฆฌํ ์์ด โ
#f(n)=f(n-1)+f(n-3)
n=int(input())
if n<=3:print(1)
else:
dp=[0,1,1,1]
for i in range(4,n+1):
dp.append(dp[i-1]+dp[i-3])
print(dp[n])
๐ป ์ ํ์ a(n) = a(n-3) + a(n-1)
โ 13699 ์ ํ์ โ
n=int(input())
if n==0:print(1)
else:
dp=[1]*(n+1)
for i in range(1,n+1):
term=0
for j in range(0,i):
term+=(dp[j]*dp[(i-1-j)])
dp[i]=term
print(dp[-1])
๐ป ์ ํ์์ j๊ฐ 0๋ถํฐ i-1๊น์ง ์ญ ๋์์ผ ํ๋ฏ๋ก bottom-up ๋ฐ๋ณต๋ฌธ์ด๋, ์ด์ค ๋ฐ๋ณต๋ฌธ. t(n) = t(0)*(tn-1) + t(1)*t(n-2) + ... + t(n-1)*t(0)
โ 2491 ์์ด โ
import sys
input=sys.stdin.readline
N=int(input())
l=list(map(int,input().split()))
dpi=[1]*N
dpd=[1]*N
for i in range(1,N):
if l[i-1]<=l[i]:
dpi[i]=(dpi[i-1]+1)
if l[i-1]>=l[i]:
dpd[i]=(dpd[i-1]+1)
print(max(dpi+dpd))
๐ป LIS๋ ์ฐ์์ฑ ์์ด ๋ถ๋ถ ์ฆ๊ฐ ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด์ง๋ง, ํด๋น ๋ฌธ์ ๋ ์ฐ์ํด์ ๊ฐ๊ฑฐ๋ ์ฆ๊ฐํ๋ / ๊ฐ๊ฑฐ๋ ๊ฐ์ํ๋ ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๊ฒฝ์ฐ๋ผ ๋ฐ๋ก ์ ํ์ ์ธ์ฐ๋ฉด ๋๋ค. ์ฐ์ํด์ ๊ฐ๊ฑฐ๋ ์ฆ๊ฐ / ์ฐ์ํด์ ๊ฐ๊ฑฐ๋ ๊ฐ์ํ๋ ๊ฐ๊ฐ์ dp ๋ง๋ค์ด ์งํํ๋ค. dpi[i] = dpi[i-1] + 1 (if l[i]≥l[i-1]) / dpd[i] = dpd[i-1] + 1 (if l[i]≤l[i-1]) ๋ dp-table ์ค ์ต๋๊ฐ์ ๊ตฌํ๋ฉด ๋!
โ 25644 ์ต๋ ์์น โ
import sys
input=sys.stdin.readline
N=int(input())
a=list(map(int,input().split()))
dp=[0]*N
cur_min=a[0]
for i in range(1,N):
if a[i-1]<cur_min: cur_min=a[i-1]
dp[i]=(a[i]-cur_min)
print(max(dp))
๐ป ์ ํ์ dp[i]๋ a[i]๋ฅผ ์ฌ๋ ๊ฒฝ์ฐ ์ป์ ์ ์๋ ์ต๋ ์ด์ต์ด๋ผ๋ฉด, greedy์ ์ํด ์ฌ๊ณ ํ์์ ์ป์ ์ ์๋ ์ต๋ ์ด์ต์ ์ผ๋จ ์ฌ๋ ๊ฒฝ์ฐ๋ a[i]๋ก ์ ํด์ ธ ์์ผ๋ฏ๋ก, ํ๋ ๊ธ์ก์ด ์ต์๊ฐ ๋์ด์ผ ํ๋ค. ๋ฐ๋ผ์ dp๋ก ๋๋ฉด์ ์์ ๋ชจ๋ ์์๋ค์ ํ๋ ๊ธ์ก ์ต์๊ฐ update. ์ ํ์์ dp[i] = a[i] - min(cur) (min(cur)์ ํ์ฌ i-1๋ฒ์งธ ๊น์ง์ ์์ ์ค ์ต์๊ฐ). dp-table์ด ์์ฑ๋๋ฉด, ์ด element ์ค ์ต๋๊ฐ์ด ์ป์ ์ ์๋ ๊ธ์ก์ ์ต๋๊ฐ์ผ๋ก ์ ๋ต์ด ๋๋ค.
โ 25214 ํฌ๋ฆผ ํ์คํ โ
import sys
input=sys.stdin.readline
N=int(input())
dp=[0 for _ in range(N)]
As=list(map(int,input().split()))
cur_min=As[0]
for i in range(1,N):
dp[i]=max(dp[i-1],As[i]-cur_min)
cur_min=min(cur_min,As[i])
print(*dp)
๐ป ๋ฌธ์ ์ ์์ ํด์ํด๋ณด๋ฉด, element๋ฅผ ๊ณ์ ์ถ๊ฐํ ๋ ๋ง๋ค index๊ฐ ํฐ ์์์์ index๊ฐ ์์ ์์๋ฅผ ๋บ ๊ฐ ์ค ์ต๋๊ฐ์ ๊ณ์ updateํ๋, dp-table์ ์ถ๋ ฅํ๋ ๋ฌธ์ . greedy์ ์ํด ํด๋น ์ฐจ์ด์ ์ต๋๊ฐ์, ์๋ก ์ถ๊ฐ๋ ์์์ ๊ธฐ์ค์์, ์์์ ์ฃผ์ด์ง ์์ ์ค ์ต์๊ฐ์ ๋บ ๊ฒฝ์ฐ์ด๋ค. dp[i]๋ element๊ฐ ์ถ๊ฐ๋๋ฉด์ ์๊ธฐ๋ list๋ด ๋ element์ ์ฐจ์ด ์ต๋๊ฐ. dp[i] = max(dp[i-1], As[i] - min(cur)) (As๋ ์์ list, cur_min์ ์ ๋ฐ์ดํธ ๋๋ ํ ์ต์๊ฐ)
โ 14494 ๋ค์ด๋๋ฏน์ด ๋ญ์์? โ
n,m=map(int,input().split())
dp=[[0]*m for _ in range(n)]
dp[0][0]=1
for i in range(n):
for j in range(m):
if i==0: dp[i][j]=1
elif j==0: dp[i][j]=1
else:dp[i][j]=(((dp[i-1][j]%1_000_000_007)+(dp[i][j-1]%1_000_000_007)+(dp[i-1][j-1]%1_000_000_007))%1_000_000_007)
print(dp[n-1][m-1])
๐ป 2์ฐจ์ ๋ฐฐ์ด dp ์ ํ์ ์ธ ๋ฌธ์ . ์ / ์๋ / ์ผ์ชฝ ๋๊ฐ์ ๊ฐ๊ฐ์ ์ด ์ธ ๋ฐฉํฅ์์ ์ค๋ ๊ฒฝ๋ก์ ๋ชจ๋ ํฉ์ผ๋ก ์ ๋ฐ์ดํธ. ์ ํ์์ dp[i][j] = dp[i-1]j] + dp[i][j-1] + dp[i-1][j-1]
โ 9655 ๋ ๊ฒ์ โ
N=int(input()) #~1000
dp=[0]*(1001)
dp[1],dp[2],dp[3]='SK','CY','SK'
if N<=3:
print(dp[N])
else:
for i in range(4,N+1):
if dp[i-1] == 'SK':
dp[i]='CY'
else:
dp[i]='SK'
print(dp[N])
๐ป ์ ์ฌ๋์ด SK๋ฉด CY, ์๋๋ฉด SK. ์์ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๊ทธ ๋ค์ ๊ฒ์์ ์น์๊ฐ ๋ฐ๋ก ์ ํด์ง๋ DP
โ 9625 BABBA โ
k=int(input())
dp=[[0,0] for _ in range(46)]
a,b=0,0
dp[1]=[0,1]
if k==1:
print(*[0,1])
else:
for x in range(2,k+1):
dp[x][0] = dp[x-1][1] #A
dp[x][1] = dp[x-1][0] + dp[x-1][1]#B
print(*dp[k])
๐ป A๋ B๋ก ๋ฐ๋๊ณ , B๋ BA๋ก ๋ฐ๋๋ฏ๋ก A๋ ์ด์ B์ ๊ฐ์ / B๋ ์ด์ A์ ๊ฐ์ + B์ ๊ฐ์
โ 9507 Generations of Tribbles โ
import sys
input=sys.stdin.readline
dp=[0]*68
dp[0],dp[1]=1,1
dp[2]=2
dp[3]=4
for _ in range(int(input())):
n=int(input())
if n<=3:
print(dp[n])
else:
for x in range(4,n+1):
dp[x] = dp[x-1] + dp[x-2] + dp[x-3] + dp[x-4]
print(dp[n])
โ 15624 ํผ๋ณด๋์น ์ 7 โ
n=int(input())
BIG = 1000000007
if n == 0:
print(0)
elif n == 1:
print(1)
else:
x,y=0,1
for i in range(n):
x,y=(x+y)%BIG, x%BIG
print(x)
๐ป ๋ํ์ ์ธ ํผ๋ณด DP. x,y์ x+y,x๊ฐ๊ฐ ๋ฃ์ผ๋ฉฐ ๋ ๋ณ์ x,y๋ง์ผ๋ก DP ์ ๋ฐ์ดํธํ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ฌ์ฉ
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Bitmasking Intermediate I - 3 Solvedโ (0) | 2023.01.05 |
---|---|
โ DP Upper-Intermediate I - 15 Solvedโ (0) | 2023.01.03 |
โ Sorting Upper-Intermediate I - 6 Solvedโ (1) | 2022.12.20 |
โ Number Theory Intermediate I - 17 Solvedโ (0) | 2022.12.13 |
โ Stack & Queue & Deque Intermediate I - 20 Solvedโ (0) | 2022.12.11 |
๋๊ธ