강의
"동적계획법"은 최적화 문제를 재귀적인 방식으로 작은 부분 문제로 나누어 해를 조합하여 전체 문제의 해답에 이르는 알고리즘 입니다.
탐색해야 할 범위를 동적으로 결정함으로써 탐색 범위를 한정할 수 있습니다.
응용
- Knapsack Problem
Step 6-3: 풀어서 내 것으로 만들자! N으로 표현
⭐ 힌트 풀이 : 이전에 기록한 값을 다시 계산하도록 구현하는 문제!
def solution(N, number):
dp = [set() for i in range(8)]
for i, x in enumerate(dp):
x.add(int(str(N) * (i+1)))
for i in range(len(dp)):
for j in range(i):
for op1 in dp[j]:
for op2 in dp[i-j-1]:
dp[i].add(op1 + op2)
dp[i].add(op1 - op2)
dp[i].add(op1 * op2)
if op2 != 0:
dp[i].add(op1 // op2)
if number in dp[i]:
return i+1
return -1
'데브코스 TIL > 자료구조, 알고리즘' 카테고리의 다른 글
Step 7: 깊이/너비 우선 탐색(DFS/BFS) 대표 문제 풀이: 여행경로 (0) | 2023.10.20 |
---|---|
Step 5: 힙(Heap) 대표 문제 풀이: 더 맵게 (0) | 2023.10.20 |
Step 4: 탐욕법(Greedy) 대표 문제 풀이: 큰 수 만들기 (0) | 2023.10.19 |
Step 2: 탐욕법(Greedy) 대표 문제 풀이: 체육복 (0) | 2023.10.19 |
Step 3: 정렬(Sort) 대표 문제 풀이: 가장 큰 수 (0) | 2023.10.19 |