Algorithm/프로그래머스

(파이썬) [알고리즘 문제 풀이] - 콜라츠 추측 (프로그래머스

Jesse 2021. 1. 22. 02:15

프로그래머스의 연습 문제중 하나인 콜라츠 추측 입니다.

숫자가 한개 주어지며 규칙은 간단합니다.

  • 주어진 숫자가 짝수라면 2로 나눈다.
  • 주어진 숫자가 홀수라면 3을 곱하고 1을 더한다.
  • 주어진 숫자가 1이 될때까지 반복한다.
  • 단, 500번을 반복해도 1이 되지 않는다면 -1을 리턴한다.

위의 작업을 진행하기 위해서는 loop이 한개 필요합니다.

For loop을 써도 되고 While loop을 써도 괜찮아 보이네요.

위 작업을 한번 할때마다 따로 variable을 만들어서 기록 해둡니다.

loop은 주어진 숫자가 1이 되거나 작업 횟수가 500번이 넘어가면

멈추는 조건이 있어야 하겠네요.

짝수인지 홀수인지 구분하는건 if statement를 써서 2로 나눴을때

나머지가 0인지 체크 했습니다.

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

저는 while loop을 썼는데요. 제출 후에

range를 500까지 해서 for loop을 쓴 답을 보았는데

그것도 좋은 아이디어라고 생각합니다.