코딩테스트 문제

[프로그래머스/Python] 콜라츠 추측

왕초보코딩러 2024. 2. 20. 22:12
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12943

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

1. 재귀

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

 

2. 반복문

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