이 문제는 규칙을 알아내는 것이 중요하다.
우선, 문제에서 원하는 것은 더하기를 많이 하지말고 최대한 곱하기로 n을 만들어라 하는 것이다.
그래서 본인은 아래와 같이 설계하였다.
- n=1이 될때까지 반복
- n이 2로 나누어지면 2로 나눔
- 그렇지 않다면 -1을 진행하고, 답 ++
function solution(n)
{
var ans = 1;
while(n!==1){
if(n%2===0) n = n/2;
else{
n=n-1;
ans++;
}
}
return ans;
}
이번 문제는 규칙을 알아내는 것이 중요한데, 직접 테스트 케이스를 계산해보면서 최적의 해를 구하기 위한 과정을 해보는 것이 중요한 것 같다. 이렇게 하다보면 규칙을 찾게 된다. 규칙만 알아낸다면 금방 푸는 문제였다.