티스토리 뷰

1351번: 무한 수열 - DP


N, P, Q가 주어질 때,

A[0] = 1

A[i] = A[i/P] + A[i/Q]

인 점화식을 만족하는 A[N]을 구하는 문제이다.


이와 같이 간단한 점화식은 중복되는 부분문제를 저장하는 DP기법을 사용하려고 접근하지만

N이 최대 10^12이기에 부분문제를 저장하는 배열을 선언할 수 없다.

그러나 점화식을 자세히 보면 i가 계속 P, Q로 나누어지는데

P와 Q가 최소값인 2일 때에도 2^40 >= 10^12이기에 각각 40보다 많은 항을 보지 않는 것을 알 수 있다.

이에 부분문제를 담는 배열을 지수에 대한 값을 인자로 두어

dp[41][41]와 같이 표현한 뒤 점화식을 세워 문제를 풀 수 있다.


또다른 방법으로는 적은 값만 참조하기에 map을 이용하여

value값이 0이라면 값을 업데이트 해주고 아니라면 그 값을 가져다 쓰는

전형적인 재귀적 동적 계획법을 사용하여 풀 수 있다.

'문제 해결 > 백준 온라인 저지' 카테고리의 다른 글

3051번: 군사 기지  (0) 2018.08.17
3044번: 자전거 경주 준비하기  (0) 2018.08.17
2014번: 소수의 곱  (2) 2018.08.09
3955번: 캔디분배  (0) 2018.07.29
1837번: 암호제작  (0) 2018.07.28
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday