프로그래머스 Summer/Winter Coding(~2018) : 점프와 순간 이동

Minhee kang·2021년 7월 12일
0

문제 보러 가기 👈 클릭!

💡 풀이

✔ 풀이 방법

n/2 만큼 이동하고 순간이동 하면 됨, n/2/2 만큼 이동하고 순간이동 하면 됨, n/2/2/2만큼 ...
==> n을 2로 나눈 몫이 1이 될때까지 계속 나누면서 몫이 홀수일경우 건전지 사용량을 1만큼 증가

재귀 구현 코드 1

def solution(n): #아이언 슈트 구매자가 이동하려는 거리n
    ans = 0
    ans = div_recursion(n, ans)
    return ans

def div_recursion(n, ans):
    if n == 1:
        return ans + 1
    elif n % 2:   #n이 홀수 일 경우
        return div_recursion(n // 2, ans + 1)
    else:    #n이 짝수 일 경우
        return div_recursion(n // 2, ans)

조금 더 간결하게 다듬은 재귀 구현 코드 2 (방법은 같음)

def solution(n): #아이언 슈트 구매자가 이동하려는 거리n
    if n == 1:
        return 1
    elif n % 2:   #n이 홀수 일 경우
        return solution(n // 2) + 1
    else:    #n이 짝수 일 경우
        return solution(n // 2)

0개의 댓글

관련 채용 정보