본문 바로가기

알고리즘/Python 기초

파이썬 - 콜라츠 추측(lv.1)

문제 ) 프로그래머스 - 콜라츠 추측(lv.1)

📌 문제 설명
1937
Collatz 사람에 의해 제기된 추측은, 주어진 수가 1 때까지 다음 작업을 반복하면, 모든 수를 1 만들 있다는 추측입니다. 작업은 다음과 같습니다.

1-1. 입력된 수가 짝수라면 2로 나눕니다. 
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 

예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 되어 8 만에 1 됩니다. 작업을 번이나 반복해야 하는지 반환하는 함수, solution 완성해 주세요.

, 주어진 수가 1 경우에는 0, 작업을 500 반복할 때까지 1 되지 않는다면 –1 반환해 주세요.

 

📌 제한 사항

  • 입력된 , num 1 이상 8,000,000 미만인 정수입니다

📌 입출력 예

n result
6 8
16 4
626331 -1

✏️ while : 1인 아닌 숫자일 경우에만 반복해 주기

✏️ 짝수 혹은 홀수 일 경우에 한 번 수행할 때마다 answer += 1 

def solution(num):

    answer = 0
    while num != 1:
        if num % 2 == 0:
            num = num // 2
        else:
            num = num * 3 + 1
        answer += 1

        if answer > 500:
            return -1

    return answer