알고리즘/python

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

minliz 2025. 4. 21. 11:13

목차

📝 문제

🎯 알고리즘 핵심 단계

✅ 실습 인증 파트_코드

⚡ 트러블 슈팅

🤔 이것도 한 번 생각해 봐요! (참고 자료)


📝 문제

 


🎯 알고리즘

💡 문제 이해

 

  • 입력된 정수 num에 대해 다음 작업을 반복한다:
    • 짝수면 2로 나눈다.
    • 홀수면 3을 곱하고 1을 더한다.
  • 이 과정을 반복하면 언젠가는 num이 1이 된다고 알려져 있음.
  • 몇 번의 작업 끝에 1이 되는지를 반환하면 됨.
  • 단, 500번 반복해도 1이 되지 않으면 -1을 반환해야 함.

 

 

💡 문제 접근

 

  • count = 0으로 반복 횟수 세기 시작.
  • 반복문 안에서 다음을 계속 수행:
    • 짝수: num //= 2
    • 홀수: num = num * 3 + 1
    • 횟수 count += 1
  • num == 1이 되면 count 리턴.
  • count가 500을 초과하면 -1 리턴.

 

 

 


✅ 실습 인증 _코드

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

 


⚡ 트러블 슈팅

 🌱 첫번째 시도할 때 테스트 케이스 16개 중에 15개 통과,, 한 개 실패

 -> 그 이유는 while문 돌기 전에 num==1, 즉 입력된 숫자 num이 1인 경우를 처리하지 않았기 때문