https://programmers.co.kr/learn/courses/30/lessons/12980
// 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치
function solution(n)
{
var ans = 0;
while (n!=0) {
if (n % 2 == 0) n /= 2;
else {
n--;
ans++;
}
}
return ans;
}
let n = 5;
console.log(solution(n));
예전에 백준에서 비슷한걸 풀어본적이 있어 쉽게 푼거 같다.
n이 짝수면 n/2를 하고, 홀수면 1을 빼주고, ans+1을 한다.
n이 0이 될때까지 반복해서 답을 구하면 된다.
문제에서 순간이동은 소모값이 없고, 점프의 경우에만 소모한다고 되있다.
N = 5일 때
먼저 홀수니까 n = 4; ans +1(한칸이동);
n=4 >> n=2; ans=1;(순간이동)
n=2 >> n=1; ans=1;(순간이동)
n=1 >> n=0; ans=2;(한칸이동)
n=0 >> 종료.
이렇게 된다.