[Algorithm] 29강 : 다이나믹 프로그래밍의 기초 문제 풀이

개미 전사 : 문제설명 문제 해결 아이디어 큰 문제를 위해 작은 문제를 통해 해결 즉 이 문제의 점화식은 이렇게 된다. 문제 풀이 #정수 N을 입력 받기 n = int(input()) # 모든 식량 정보 입력 받기 array = list(map(int,input().split())) # 앞서 계산된 결과를 저장하기 위한 DP 테이블 초기화 d = [0] * 100 # 다이나믹 프로그래밍(Dynamic Programming) 진행(보텀업) d[0] = array[0] d[1] = max(array[0], array[1]) for i in range(2,n): d[i] = max(d[i-1],d[i-2] + array[i]) 계산된 결과 출력 print(d[n-1]) 1로 만들기 문제 해결 아이디어 이렇게 ..

[Algorithm] 28강 : 다이나믹 프로그래밍의 정의와 구현

1. 다이나믹 프로그래밍 1-1. 다이나믹 프로그래밍(동적 계획법) 이란? 다이나믹 프로그래밍은 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상 시키는 방법 이미 계산된 결과는 별도의 메모리 영역에 저장하여 아시 계산하지 않도론 한다. 두 가지 방식으로 구성 ( 탑다운 / 보텀업 ) ※동적(Dynamic) 할당 이란? - 프로그램이 실행되는 도중에 실행에 필요한 메모리를 할당하는 기법 1-2.다이나믹 프로그래밍의 조건 1.최적 부분구조 (Optimal Substructure) 큰 문제를 작은 문제로 나눌수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다. 2.중복되는 문제(Overlapping Subproblem) 동일한 작은 문제를 반복적으로 해결 2. 피보나치 수열(일반 재귀함..