Level 1. 콜라스 추측

Pear_Mh·2021년 6월 18일
0

Programmers-Level 1.

목록 보기
43/49

43. 콜라스 추측

코딩테스트 연습 > 연습문제 > 콜라스 추측
https://programmers.co.kr/learn/courses/30/lessons/12943


문제 설명

Input value =

  • n = 정수

Process =

  • 입력된 수가 짝수/홀수인지 파악

    1. 짝수라면 //2 , 홀수라면 * 3 + 1

Output value =

  • n이 1이 될 때 까지의 작업 횟수

    • 500번을 반복해도 1이 되지 않으면 -1

제한 조건

  • 입력된 수 n는 1 이상 8,000,000 미만인 정수이다.

문제 구상

#00
n = 6
cnt = 0
#01
while True:
    if n == 1:
        0
    if n%2 == 0:
        n //=2
    else:
        n = (n*3)+1
    cnt+=1
#02
    if n == 1:
        cnt
        break
    elif cnt == 500:
        -1
        break
#03
cnt

문제 풀이

def solution(n):
    cnt = 0
    while True:
        if n == 1:
            return 0
        if n%2 == 0:
            n /=2
        else:
            n = (n*3)+1
        cnt+=1
        if n == 1:
            return cnt
        elif cnt == 500:  
            return -1

# Code test
n = 6
solution(n)  

마치며

n의 값이 계속 변경되어 재귀함수를 써도 될 듯 하지만, 사용에 있어서 제약(cnt가 500 이상일경우 return -1 또는 1일 경우 return 0) 의 경우가 있어 위와 같이 while-if 방법을 써서 간단히 구현하는 것이 더 편할 것이라 판단했다...!

profile
Beyond the new era.

0개의 댓글