- 입력된 수가 짝수라면 2로 나눔 - 입력된 수가 홀수라면 3을 곱하고 1을 더함 - 결과로 나온 수에 같은 작업을 1이 될 때까지 반복
-> 위 작업을 몇 번 반복해야 하는지를 구해야 함
조건
주어진 수가 1인 경우 -> 0
작업을 500번 반복할 때까지 1이 되지 않는다면 -> -1
"""
입출력 예시)
num = 6 -> 8
num = 16 -> 4
num = 626331 -> -1
"""
def solution(num):
cnt = 0
while True:
if num == 1: # num이 1인 경우
break # 중지
if num % 2 == 0: # num이 짝수라면
num //= 2 # 2로 나눔
cnt += 1 # cnt = cnt+1
else: # num이 홀수라면
num = num * 3 + 1 # 3을 곱하고 1을 더함
cnt += 1 # cnt = cnt+1
return cnt if cnt < 500 else -1 # 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환
처음에 짠 코드에서는 cnt가 500 이상일 때 -1을 반환한다는 코드를 잘못 짰었다
def solution(num):
cnt = 0
while True:
if num != 1:
if num % 2 == 0:
num = num // 2
cnt += 1
else:
num = num * 3 + 1
cnt += 1
if num == 1:
break
if cnt >= 500:
cnt = -1
return cnt