본문 바로가기

프로그래머스

점프와 순간 이동

문제 링크

 

코딩테스트 연습 - 점프와 순간 이동

OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈�

programmers.co.kr

 

* 풀이

이동할 거리 N이 주어지면, 해당 거리의 절반만 이동하면 순간이동을 통해서 나머지 거리를 한 번에 이동할 수 있음

이동할 거리 N이 홀수인 경우에는, 짝수인 N-1 거리까지만 이동하고 1회 점프하면 목표치에 도달할 수 있음

 

입력값 N을 반복하여 2로 나눈다.

나눈 몫이 홀수이거나 소숫점이 생기는 경우에, 홀수의 경우에는 -1, 소숫점이 생기는 경우에는 소숫점을 제거하며 다시 2로 나누는 것을 반복함

이 때 홀수를 제거하거나 소숫점을 제거할 때 건전지 사용량(answer)을 +1한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from math import floor 
 
def solution(n):
    answer = 0
    
    while n > 0 :
        n /= 2
        
        remain = n % 2
        if remain == 1 :
            # 홀수임
            n -= 1
            answer += 1
        elif remain % 1 > 0 and remain % 1 < 1 :
            # 소수점  있음
            n = floor(n)
            answer += 1
    
    return answer
cs