모르지 않다는 것은 아는것과 다르다.

알고리즘

점프와 순간이동

채마스 2022. 2. 26. 01:09

접근 방식(알고리즘 분류)

  • 연산문제

내 풀이


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

풀이 설명

  • 5000 --> 2500 --> 1250 --> 625 --> 624 --> 312 --> 156 --> 78 --> 39 --> 38 --> 19 --> 18 --> 9 --> 8 --> 4 --> 2 --> 1
  • 1을 빼줄때만 +1을 해줌

느낀점

  • 1에서 5000으로 올라갈때 최대한 빨리 올라가려고 재귀함수를 통해 5000에 가장 가까운 위치까지 간 후 백트래킹을 통해 조건을 만족시키려고 했다.
  • 문제를 너무 어렵게 접근한 것 같다.
  • 1에서 부터 시작해서 5000으로 가는 것이 아니라 5000에서 시작해서 1로 가는 풀이가 더 쉬운 접근인것 같다.
  • 하지만 반대로이기 때문에 2로 나누어지지 않을 경우 1을 더해주는 것이 아니라 빼줘야한다.