🍋 문제링크
🍎 코드 제출 기록 (메모리 및 시간)
메모리 : 29028KB
시간 : 320ms
🍉 Code
import sys
input = sys.stdin.readline
def nj(k, coin, dp):
temp=[]
for i in coin:
if k >= i and dp[k-i] != -1:
temp.append(dp[k-i]+1)
if len(temp)>0:
return min(temp)
else:
return -1
n, k = map(int, input().split())
coin=[]
for i in range(n):
coin.append(int(input()))
coin.sort()
dp = [-1 for i in range(k + 1)]
for i in range(1, k+1):
if i in coin:
dp[i] = 1
else:
dp[i] = nj(i, coin, dp)
print(int(dp[k]))
🥝 메모
<푸는 순서>
- coin 배열의 원소 == dp 의 인덱스 인 부분은 항상 1개이므로 dp[x] = 1
- coin 배열의 원소 != dp 의 인덱스 인 부분은 dp[x-coin의 원소들]+1 의 최솟값을 넣는다
<python : 정수 두개 입력받기>
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
<python : 크기 n 배열 입력받기>
import sys
input = sys.stdin.readline
arr=[]
for i in range(n):
arr.append(int(input()))
<python : 배열 오름차순/내림차순 정렬하기>
arr.sort() #오름차순
arr.reverse() #내림차순
반응형
'➰ 취업준비 > 알고리즘 문제풀이' 카테고리의 다른 글
[Python][백준][11057] 오르막 수 (DP) (0) | 2021.04.07 |
---|---|
[Python][백준][1874] 스택 수열 (STACK) (0) | 2021.04.01 |
[Python][백준][11055] 가장 큰 증가 부분 수열 (DP) (0) | 2021.03.29 |
[Python][백준][11048] 이동하기 (DP) (0) | 2021.03.29 |
[Python][백준][5582] 공통 부분 문자열 (DP) (0) | 2021.03.29 |