[프로그래머스] 점프와 순간 이동Lv.2 - Python

GoshK·2022년 2월 14일
0

[프로그래머스] Python

목록 보기
64/68
post-thumbnail

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

나의 풀이

def solution(n):
    factors = []
    while n > 0:
        factors.append(n)
        n //= 2
    factors = sorted(factors)
    return sum([1 for i in factors if i % 2 != 0])
  • n을 포함하여 n이 0이 보다 클 때까지 n을 2로 나누고 몫을 factors 리스트에 넣어준다. 이 리스트는 n까지 가는 길로 활용한다. 이 factors 리스트를 잘 보면 다음 단계가 홀수인 경우에는 점프를 해야되는 규칙이 보인다.
    ex) n = 10
    약수: 1 -> 2 -> 5 -> 10
    0 -> 1. 홀수이므로 ans += 1. 현재 위치 1
    1 -> 2. 홀수가 아니므로 스킵. 현재 위치 2
    2 -> 5. 홀수이므로 ans += 1. 현재 위치 5
    5 -> 10. 홀수가 아니므로 스킵. 현재 위치 10
  • 이런식으로 홀수일 때만 ans를 1씩 늘려줘서 답을 구하면 된다.

0개의 댓글