새소식

⌨️ Algorithms/프로그래머스

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

2022. 9. 16. 09:22

  • -

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

 

프로그래머스

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

programmers.co.kr

 

- 입력된 수가 짝수라면 2로 나눔
- 입력된 수가 홀수라면 3을 곱하고 1을 더함
- 결과로 나온 수에 같은 작업을 1이 될 때까지 반복

 

-> 위 작업을 몇 번 반복해야 하는지를 구해야 함

 

  • 조건
    • 주어진 수가 1인 경우 -> 0
    • 작업을 500번 반복할 때까지 1이 되지 않는다면 -> -1 

 

"""
입출력 예시)

num = 6 -> 8
num = 16 -> 4
num = 626331 -> -1
"""

def solution(num):
    cnt = 0
    
    while True:
        if num == 1: # num이 1인 경우
            break # 중지
            
        if num % 2 == 0: # num이 짝수라면 
            num //= 2 # 2로 나눔
            cnt += 1 # cnt = cnt+1
        else:        # num이 홀수라면 
            num = num * 3 + 1 # 3을 곱하고 1을 더함
            cnt += 1 # cnt = cnt+1
            
    return cnt if cnt < 500 else -1 # 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환

 

 

처음에 짠 코드에서는 cnt가 500 이상일 때 -1을 반환한다는 코드를 잘못 짰었다

def solution(num):
    cnt = 0

    while True:

      if num != 1:
        if num % 2 == 0:
          num = num // 2
          cnt += 1
        else:
          num = num * 3 + 1
          cnt += 1

      if num == 1:
        break 

      if cnt >= 500:
        cnt = -1
        
    return cnt

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!