PROGRAMMERS Python Lv1. 콜라츠 추측

최대 1 분 소요

이번 문제는 콜라츠 추측이다.

나의 코드는 다음과 같다.

def solution(num):
    cnt = 0
    while num != 1:
        if num % 2 ==0:
            num /= 2
            cnt += 1
            if cnt > 500:
                cnt = -1
                break
        else:
            num = num * 3 + 1
            cnt += 1
            if cnt > 500:
                cnt = -1
                break
    return cnt

이 문제의 풀이는 다음과 같이 진행했다.

  1. while 문을 통해 1이 될 때까지 코드를 구동한다.

  2. 문제에서 제시한 짝수와 홀수의 경우로 나눠준다.

  3. 마지막 조건으로 500번이 넘어갈 경우 -1을 출력하는 것을 각각 넣는다.

다른 사람의 풀이 중에 더 간단한게 있어서 같이 첨부하겠다.

def collatz(num):
    for i in range(500):
        num = num / 2 if num % 2 == 0 else num*3 + 1
        if num == 1:
            return i + 1
    return -1

이 코드를 보면 while을 사용하지 않고도 더 짧은 코드를 짰다.

range로 500이라는 횟수를 지정해주고,

num이 1이 되었을 때, i+1가 가르키는 것이 곧 횟수이므로

return 시켜주면 된다.

댓글남기기