BOJ(카드 구매하기2)(16194)

카드 구매하기(2)

  • 이전 카드 구매하기 문제에서 최소값을 구하는 문제로 바뀐 것 뿐이다.
  • DP가 쉽지 않다는 걸 배울 수 있었다.

  • 계산할 때마다 항상 초기에 있는 인덱스 0의 값을 건들이기에,
  • min_val이란 변수를 통해 이 안에 최소값을 담은 뒤,
  • 그 값을 넣어주는 방식을 변경하였다.
N = int(input())
p = [0] + list(map(int, input().split()))
d = [0]*(N+1)
for i in range(1, N+1):
    min_val = 987654321
    for j in range(1, i+1):
        min_val = min(min_val, d[i-j]+p[j])
    d[i] = min_val
print(d[N])

참고자료 codeplus 참고블로그

0%