S. Kevin 창고

사지방 시간이 없어서 급하게 올림.



문제 링크 : https://www.acmicpc.net/problem/1463


풀이:


숫자 10을 1로 만들 때, 10 9 3 1 이렇게 만들어진다.

D[i] : 숫자 i를 1로 만들 수 있는 최소 연산 횟수.


D[i] = MIN(D[i / 2], D[i / 3], D[i - 1]) + 1


단, D[i / 2], D[i / 3]은 i가 2로 나누어지거나, i가 3으로 나누어질 때만 참조 가능.


**** 주의. 나눌 수 있다고 해서 나눈 값으로 참조하면 최소값이 되지 않는다.

ex) 

  10 -> 9 -> 3 -> 1 과 10 -> 5 -> 4 -> 3 -> 1 중, 전자가 답이다.



'프로그래밍 > 알고리즘' 카테고리의 다른 글

[BOJ] 1012번. 유기농 배추  (0) 2017.12.04
[BOJ] 1010번. 다리 놓기  (0) 2017.11.27
[BOJ] 1008번. 분산처리  (0) 2017.11.24
[BOJ] 1007번. Vector Matching  (0) 2017.11.22
프로그램 명: suffix_array(open)  (0) 2012.06.22