Programmers/1단계

[1단계][연습문제] 콜라츠 추측

Snowboarder 2022. 3. 18. 13:41

문제접근

  • while로 num이 1이될때까지 돌려야하고
  • if 조건문과 cnt변수를 사용해서 cnt를 출력한다.
  • 다중 if 문을 사용할 때 조심한다.

문제풀이

내풀이

def solution(num):
    cnt = 0
    while num != 1:
        if num % 2 == 0:
            num = round(num/2)
            cnt += 1

        elif num % 2 == 1:
            num = num*3 + 1
            cnt += 1

    if cnt >= 500:
        cnt = -1

    return cnt

다른사람풀이

def collatz(num):
    for i in range(500):
        num = num / 2 if num % 2 == 0 else num*3 + 1
        if num == 1:
            return i + 1
    return -1
  • for 범위를 500으로 두었고 cnt대신 i를 출력
  • if문을 1줄로 처리하였다