출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기


어렵게 보였던 문제이지만 생각보다 간단했던 문제이기도 하다:

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

while문으로 지속적으로 돌려주되, 500번이 되는 순간에도 답이 안 나온다면 -1을 되돌려주게끔 설정을 했고, i=0이라는 값을 주고, 이 i 값을 몇번 반복해야 되는지 횟수를 저장하는 값으로 사용한다.

만약 num1 되는 순간이 온다면, i값을 되돌려주고, while문을 끝내준다. 그리고 num 값이 2로 나누어진다면 i값에 1을 더해주고 num이라는 숫자는 원래 num값의 절반이 되도록 설정해준다. num값이 2로 나누어지지 않는다면 i값에 1을 더해주고, num값은 본래의 num값에 3을 곱해주고 1을 더해도록 설정했다.