-
[백준] 16194 카드구매하기2 (python)개발/알고리즘 2022. 8. 31. 21:29
https://www.acmicpc.net/problem/16194
16194번: 카드 구매하기 2
첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000)
www.acmicpc.net
✋ 접근방법
dp를 이용해서 풀이
중복해서 사용가능하므로 knapsack과는 다르게,
앞에서부터 각 무게의 최소값을 찾아나가면 됨
👏 코드
# knapsack 알고리즘 이용 -> 중복허용 가능하므로 dp 갱신부분의 j루프를 앞에서부터 진행! N = int(input()) arr = [0]+ list(map(int,input().split())) # index : 카드개수, value : 최소가격 dp = arr.copy() for i in range(1,N+1): for j in range(1,i+1): # 중복허용가능하므로, 앞에서부터 진행 dp[i] = min(dp[i], dp[i-j] + arr[j]) # print(i, dp) print(dp[N])'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 올바른 괄호 (python) (0) 2022.09.13 [백준] 2302 극장좌석 (python) (0) 2022.09.02 [프로그래머스] 124나라의숫자 (python) (0) 2022.08.30 [백준] 1406 에디터 (python) (0) 2022.08.29 [백준] 1850 최대공약수 (python) (0) 2022.08.24