[ python level 1 ] 콜라츠 추측

안영우·2021년 3월 31일
0

[ 프로그래머스 ]

목록 보기
9/10
post-thumbnail

📌 콜라츠 추측

주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측이다.

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

💡 나의 풀이

이전에 백준인가 어디서 한번 풀어봤던 문제였다.
while문을 사용하면 쉽게 해결 할 수 있다.

해결 과정은 다음과 같다.

  1. n이 짝수 일 때, 기존 n에 2로 나눈 몫을 n으로 저장한다.
  2. n이 홀수 일 때, 기존 n에 3을 곱하고 1을 더한 n으로 저장한다.
  3. 1번과 2번의 과정을 거쳤다면 cnt를 1 증가시킨다.
  4. 만약, cnt가 500번 이상일때는 -1을 반환시키고 종료한다.
  5. n이 1보다 작거나 같아진다면 while문을 종료시킨다.
def solution(n):
    cnt = 0
    while n > 1:
        if n % 2 == 0:
            n //= 2
        else:
            n = (n * 3) + 1
        cnt+=1
        if cnt >= 500:
            return -1
    return cnt

print(solution(626331))
profile
YW_Tech

0개의 댓글