-
[백준] 16194번 문제 (카드 구매하기 2) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 8. 19. 16:09
import sys n = int(input()) prices = [0] + list(map(int, input().split())) dp = [0] + [sys.maxsize] * n dp[1] = prices[1] for i in range(2, n + 1): for j in range(1, i + 1): dp[i] = min(dp[i], dp[i - j] + prices[j]) print(dp[n])
https://honggom.tistory.com/79
위 링크의 문제와 매우 유사한 문제이며 위 문제를 먼저 풀어봤으면, 금방 풀 수 있는 문제다.
문제는 매우 길어 읽고 이해하는데 시간은 꽤 걸리지만 문제를 이해했으면 솔루션을 금방 떠올릴 수 있다.
dp에 공간을 미리 할당해두고 이중 for문에서 dp[i]에 항상 최소값을 할당해주며 dp[n]까지 구하고 출력해주면 된다.
혹시 설명이 부족하다면 위 링크를 참고해주길 바란다!
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 2133번 문제 (타일 채우기) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 1912번 문제 (연속합) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 1463번 문제 (1로 만들기) 파이썬(Python) 풀이 (2) 2021.08.19 [백준] 14002번 문제 (가장 긴 증가하는 부분 수열 4) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 11727번 문제 (2 x n 타일링 2) 파이썬(Python) 풀이 (0) 2021.08.19