알고리즘 풀이/프로그래머스

[Level1] 콜라츠 추측

mhko411 2021. 1. 25. 22:35
728x90

문제

입력된 수가 짝수면 2로 나누고 홀수면 3을 곱한뒤 1을 더한다.

위의 과정을 1이 될때까지 반복하며 반복한 횟수를 출력한다.

이때 500번을 초과하여 반복했을 때도 1이되지 않는다면 -1을 출력한다.

 

입력

입력되는 정수는 1 이상 8000000 미만인 정수이다.

 

출력

반복횟수를 출력한다.


1. 500번의 for문을 실행한다.

2. 짝수면 2를 나누고 홀수면 3을 곱한 뒤 +1한다.

3. 위 과정 중 num이 1이라면 바로 횟수를 return한다.

4. for문에서 return하지 못했다면 -1을 return한다.

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