PROGRAMMERS Python Lv1. 콜라츠 추측
이번 문제는 콜라츠 추측이다.
나의 코드는 다음과 같다.
def solution(num):
cnt = 0
while num != 1:
if num % 2 ==0:
num /= 2
cnt += 1
if cnt > 500:
cnt = -1
break
else:
num = num * 3 + 1
cnt += 1
if cnt > 500:
cnt = -1
break
return cnt
이 문제의 풀이는 다음과 같이 진행했다.
-
while 문을 통해 1이 될 때까지 코드를 구동한다.
-
문제에서 제시한 짝수와 홀수의 경우로 나눠준다.
-
마지막 조건으로 500번이 넘어갈 경우 -1을 출력하는 것을 각각 넣는다.
다른 사람의 풀이 중에 더 간단한게 있어서 같이 첨부하겠다.
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
이 코드를 보면 while을 사용하지 않고도 더 짧은 코드를 짰다.
range로 500이라는 횟수를 지정해주고,
num이 1이 되었을 때, i+1가 가르키는 것이 곧 횟수이므로
return 시켜주면 된다.
댓글남기기