Programmers 점프와 순간 이동, Javascript

cptkuk91·2022년 9월 22일
1

Algorithm

목록 보기
104/161

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12980?language=javascript

제한 사항

숫자 N: 1 이상 10억 이하의 자연수
숫자 K: 1 이상의 자연수

코드

function solution(n){
	let result = 0;
    
    while(n > 0){
    	if(n % 2 === 0){
        	n /= 2;
        } else {
        	n -= 1;
            result += 1;
        }
    }
    return result;
}

코드 풀이

n을 5라고 가정했을 때, 반복문을 시작합니다. 5는 0보다 크기 때문에 반복문을 시작하고, 5 % 2 === 0이 아니기 때문에 else로 갑니다.

5 - 1 해서 n = 4가 됐고, result(이동값)은 1이 됩니다.
n은 현재 4, 4 % 2 === 0이기 때문에, n = 4 / 2 해서 n은 2가 됩니다.
다시 n은 2, 2 % 2 === 0이기 때문에, n = 2 / 2 해서 n은 1이 됩니다.
현재 n은 1, 1 % 2 === 0이 아니기 때문에 else로 들어가고, n = 1 - 1해서 0이 됩니다.
result(현재 1) result = result + 1해서 result는 2가 됩니다.
그럼 n(5)까지 이동하기 위해서는 최소 result(2)만큼 이동해야 된다는 뜻입니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글