Programmers/프로그래머스-콜라츠 추측-python

cosmos·2021년 3월 31일
2
post-thumbnail

문제📖

풀이🙏

  • 콜라츠의 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측이다.
    -> 1-1. 입력된 수가 짝수라면 2로 나눈다.
    -> 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더한다.
    -> 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복한다.
  • 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성하라.
  • 단, 작업을 500번 반복해도 1이 되지 않는다면 -1을 반환하라.
    -> while 반복문 + if else 조건문 + break + 증감표현식으로 구현하였다.

코드💻

# programmers, phase1 : 콜라츠 추측, python3
def solution(num):
    cnt = 0
    
    while True:
        if num == 1:
            break
        if cnt == 500:
            break
        if num %2 == 0:
            num //= 2
            cnt += 1
        else:
            num = num * 3 + 1
            cnt += 1
            
    return cnt if cnt != 500 else -1

최적코드

#  - , - , - , 강준기 , - 외 7 명 님 코드 참고
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

결과😎


출처 && 깃허브📝

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

0개의 댓글