토니의 연습장

다이나믹 프로그래밍 예제 본문

Algorithm/Ch 4. 응용 알고리즘

다이나믹 프로그래밍 예제

bellmake 2025. 1. 4. 11:40

https://www.acmicpc.net/problem/1463

N = int(input())

a = [0]*(N+1) # 길이 N+1, a[N] 참조 가능

a[1] = 0

for i in range(2, N+1):
    a[i] = 1+a[i-1]
    
    if i%3 == 0:
        a[i] = min(a[i], 1+a[i//3])
    if i%2 == 0:
        a[i] = min(a[i], 1+a[i//2])
        
print(a[N])

 

https://www.acmicpc.net/problem/2579

N = int(input())

S = [0]*N

for i in range(N):
    S[i] = int(input())



A = [0]*N
B = [0]*N

A[0] = S[0]
B[0] = S[0]

for i in range(1, N):
    if i >= 2:
        A[i] = S[i]+max(A[i-2],B[i-2])
    else:
        A[i] = S[i]
        
    if i >= 3:
        B[i] = S[i]+S[i-1]+max(A[i-3],B[i-3])
    else:
        B[i] = S[i]+S[i-1]
        
print(max(A[N-1],B[N-1]))

'Algorithm > Ch 4. 응용 알고리즘' 카테고리의 다른 글

위상 정렬 예제  (1) 2025.01.04