[프로그래머스] 점프와 순간 이동

박형진·2021년 11월 13일
0

https://programmers.co.kr/learn/courses/30/lessons/12980#qna


1. 전체 코드

def solution(n):
    ans = 0
    while n != 0:
        if n % 2 == 0:
            n /= 2
        else:
            n -= 1
            ans += 1
    return ans


print(solution(5000))

2. 후기

  1. 0부터 시작하는 접근이 아니라, n에서 부터 시작하여 0으로 도착하는 방식으로 접근했다.
  2. 짝수일 경우에는 건전지가 소비되지 않으므로 n/2 연산만 수행하고, 홀수일 한 칸 점프(n-1) 하여 짝수로 맞춰준다. 이 때 건전지(ans+=1) 한 개가 사용된다.
# n = 5000
# 2500
# 1250
# 625
# 625 - 1 = 624 (ans += 1)
# 312
# 156
# 78
# 39
# 39 - 1 = 38 (ans += 1)
# 19
# 19 - 1 = 18 (ans += 1)
# 9
# 9 - 1 = 8 (ans += 1)
# 8
# 4
# 2
# 1
# 1 - 0 = 0 (ans += 1)
# 0 (while 탈출)
profile
안녕하세요!

0개의 댓글