title: "[프로그래머스] 점프와 순간 이동 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/12980"
description: "프로그래머스 Level 2 문제 [점프와 순간 이동]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def solution(n):
    # N이 10억 정도로 클 수 있습니다.
    # O(log n), O(1) 정도에 해결하는 방법이 있다는 뜻입니다.
    
    ans = 1
    # 우선 n이 2로 나누어진다면, 나눌 수 있는 만큼 나눠봅니다.
    while n > 1:
        while n % 2 == 0:
            n /= 2
            
        # 예외처리: n이 1이면 그냥 끝냅니다.
        if n == 1:
            break
            
        # 2로 안 나누어떨어지면 1을 빼서 2로 나누어떨어지게 합니다
        n -= 1
        ans += 1
        
    return ans

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges