[문제 풀이] 점프와 순간 이동 LV 2.

SEUNGJUN·2024년 3월 30일
0

Data Structure & Algorithm

목록 보기
12/20

요구사항


1차 문제 해결

def solution(n, ans = 0):
    if n % 2 == 0:
        res = int(n / 2)
    else:
        ans += 1
        res = int(n - 1 / 2)
    if res == 1:
        return ans + 1
    return solution(res, ans)
  • 주어진 값에서 2의 배수만큼 순간이동이 가능하므로 역으로 5라고 했을때 주어진 값에서 2의 배수인지 확인하고 아니라면 -1을 이동하고 2로 나누어 준다.

  • 위 과정을 재귀함수로 불러와 주고 더 이상 이동이 불가능한 1이 떨어 졌을때 return을 해준다.

위 코드의 문제는 테스트 케이스가 만약 n 값이 1이라면 결과가 1로 떨어져야하는데 현재는 1일때 무한 재귀함수에 빠져서 RecursionError: maximum recursion depth exceeded in comparison 에러가 발생하는 문제가 있었다.

def solution(n, ans = 0):
    if n == 1:
        return 1
    elif n % 2 == 0:
        res = int(n / 2)
    else:
        ans += 1
        res = int(n - 1 / 2)
    if res == 1:
        return ans + 1
    return solution(res, ans)

간단하게 1값일때 처리를 해준다.

profile
RECORD DEVELOPER

0개의 댓글