[파이썬3 코딩테스트] 콜라츠 추측

Sy Rhee·2023년 2월 1일
0

콜라츠 추측 (Collatz's Conjecture)
어떤 자연수에 대해서, 다음 작업을 반복하면 1로 만들 수 있다는 추측이다.
처음 수 a1a_1 가 홀수라면 -> 3을 곱하고 1을 더한다. (a2=3a1+1a_2 = 3 a_1 + 1)
처음 수 a1a_1 가 짝수라면 -> 2로 나눈다. (a2=a12a_2 = {a_1 \over2})
이를 반복하여 an=1a_n = 1 이 되면 종료한다.

문제 조건

500회 이상 반복해도 1이 안되면 -1
처음 수가 1 (a1=1a_1 = 1)인 경우는 0
이외에는 1을 만들기까지 반복한 횟수 (ana_n에서 nn)을 출력

나의 풀이

def solution(num):
    answer = 0
    while num > 1:
        if num%2 == 0:
            num /= 2
            answer += 1
            continue
        if num%2 != 0:
            num = 3*num + 1
            answer += 1
            continue
    if answer > 500:
        return -1
    if num == 1 and answer == 0:
        return 0
    return answer
profile
hello

0개의 댓글