dp

알고리즘/동적 계획법 (DP)

[이코테] 실전 문제

DP 문제는 수식을 생각해 줘야하는데 어려운 문제에서는 그게 참 어렵다. 책의 실전 문제에서는 아직 엄청나게 어려운 문제는 없었다. 1로 만들기 주어진 정수 X를 1로 만드는 연산의 최소 횟수를 구하는 문제였다. 연산 종류 X%5 == 0 이면 5로 나누기 X%3 == 0 이면 3으로 나누기 X%2 ==0 이면 2로 나누기 X - 1 하기 DP 문제를 풀 때는 초깃값을 설정할 수 있는 것은 설정하고, 나머지는 가장 큰 값으로 채우거나 비워놓아야 한다. 이 문제에서는 1,2,3,5 index의 값을 1로 설정할 수 있다. 문제의 수식은 4번째 값을 구할 때 찾아낼 수 있다. dp[4] = min(dp[4-1]+1 , dp[4/2]+1) 연산을 할 수 있다면 dp[연산 결과]+1을 비교해 최솟값을 찾아내는 ..

알고리즘/동적 계획법 (DP)

동적 계획법 (Dynamic Programming)

동적 계획법 (Dynamic Programming) 하나의 문제는 한번만 풀게 하는 알고리즘 메모리 공간을 약간 더 써서 연산 속도를 비약적으로 증가 시킬 수 있음 메모이제이션 - DP를 구현하는 방법 중 하나 - 메모리(배열)에 한 번 구한 결과를 메모해두고 같은 식을 호출하면 그대로 가져옴 (캐싱) 분할 정복과 다른점 : DP는 분할한 문제들이 서로 영향을 미침 DP 구현 방법 탑다운(하향식) 방식 : 재귀를 이용해 DP 푸는 방법 (큰 문제 해결 위해 작은 문제 호출) 보텀업(상향식) 방식 : 반복문 이용해 DP 푸는 방법 (작은 문제부터 답을 도출함) 1. 점화식 찾기 2. dp 값이 정해져 있다면 넣고 시작하기, dp 초깃값은 큰 값 혹은 작은 값 넣기 3. 모든 dp의 값을 (점화식으로 구한 ..

hahihi
'dp' 태그의 글 목록