2014년 7월 10일 목요일

1463 1로 만들기

1. N이 3으로 나누어 떨어지면, 3으로 나눈다.
2. N이 2로 나누어 떨어지면, 2로 나눈다.
3. 1을 뺀다.
의 3가지 과정중에 아무거나 써서 숫자를 1로만든다. 이때 최소한의 과정을 사용할때의 횟수를 구하는 문제이다.
첨엔 공식으로 한번에 답을 유추하려했지만, 도저히 풀리질 않았다.
어쩔 수 없이 재귀를 통해 답을 풀었다.
재귀로 사용한 방법은
1,2번을 동시에 만족할때는 1,2번으로 재귀.
1번만 만족 할 때는 1번으로 재귀.
2번만 만족 할 때는 2번과 3번으로 재귀.
둘 다 만족하지 않을 때는 3번으로 재귀.
재귀를 할때는 항상 횟수를 1씩 늘려주는 변수를 가지고 있어야 한다.
그리고 n이 1이 됬을때, 최소가 되는 값으로 걸러주면된다.

나름 고생한 문제..

소스에는 다른사람이 푼 소스가 주석으로 걸려 있다.

소스

댓글 없음:

댓글 쓰기