문제 링크 : 코딩테스트 연습>Summer/Winter Coding(~2018)>점프와 순간 이동
점프
: K 칸 점프 -> 건전지 K만큼 소모O
순간이동
: (현재까지 온 거리) x 2 에 해당하는 위치 이동 -> 건전지 소모X
N | 건전지 사용량의 최솟값 | n / 2 | 나머지 |
---|---|---|---|
1 | 1 | 1 /2 = 0 | 1 |
2 | 1 | 2 /2 = 0 | 0 |
3 | 2 | 3 /2 = 1 | 1 |
4 | 1 | 4 / 2 = 2 | 0 |
5 | 2 | 5 / 2 = 2 | 1 |
6 | 2 | 6 / 2 = 3 | 0 |
7 | 3 | 7 / 2 = 3 | 1 |
8 | 1 | 8 / 2 = 4 | 0 |
9 | 2 | 9 / 2 = 4 | 1 |
10 | 2 | 10 / 2 = 5 | 0 |
11 | 3 | 11 / 2 = 5 | 1 |
12 | 2 | 12 / 2 = 6 | 0 |
n이 몫인 건전지 사용량의 최솟값
n이 몫인 건전지 사용량의 최솟값 + 1(나머지)
ex)
function solution(n) {
let div = Math.floor(n / 2);
if (div === 0 && n % 2 === 0) return 0;
if (div === 0 && n % 2 !== 0) return 1;
if (n % 2 === 0) return solution(div);
else return solution(div) + 1;
}