[프로그래머스](python) 콜라츠 추측(Collatz conjecture)

berry ·2021년 6월 1일
0

Algorithm

목록 보기
35/77
post-thumbnail

문제


🧩 While

while True:
	(반복되는 조건)
  • while True 외에 원하는 반복 조건을 넣을 수 있다.
  • 조건이 False가 되면 while문 밖으로 나가 이후 코드 실행

🏁 내 풀이

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

📌

  • while 반복문 한 번 돌 때마다 answer += 1 카운트
  • while 조건이 False가 되어 나옴 (num<=1)
  • answer 판별


🧩 다른 풀이

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

📌

  • 내 코드는 num = 1 이 될 때까지 작동하는 반면에,
    이 코드는 루프를 500까지 제한하여 -1을 출력하는 점이 더 낫다
    (출력 예 3번 num = 626331:
    내 코드- 508번 루프
    이 코드 - 500번 돌고 나옴)

profile
Engineer

0개의 댓글