Coding Problem
[프로그래머스] 점프와 순간 이동
Yepchani
2024. 11. 30. 19:49
반응형
문제
Summer/Winter Coding(~2018) - 점프와 순간 이동
https://school.programmers.co.kr/learn/courses/30/lessons/12980
예시 코드
function solution(n)
{
return n.toString(2).replace(/0/g, "").length;
}
풀이
이동하려는 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량의 최솟값을 구하는 문제입니다.
- 앞으로 K 칸 점프할 시, 건전지 사용량은 K입니다.
- (현재 위치 * 2)에 해당하는 위치로 순간 이동할 시, 건전지를 사용량은 0입니다.
N = 13인 경우,
0 -> 1 // 점프
1 -> 2 // 순간 이동
2 -> 3 // 점프
3 -> 6 // 순간 이동
6 -> 12 // 순간 이동
12 -> 13 // 점프
총 세 번의 점프가 필요합니다.
이 과정을 거꾸로 하면 십진수를 이진수로 변환하는 과정과 같습니다.
13을 이진수로 변환하면 1101이 됩니다.
따라서 N까지 도달하는데 필요한 최소한의 건전지 사용량은, N을 이진수로 변환한 후 1비트의 개수와 같습니다.