알고리즘 테스트/프로그래머스 문제풀이 및 해설
<프로그래머스 문제풀이: 콜라츠 추측> Level 1 - 파이썬
개발린이
2020. 11. 24. 18:22
어렵게 보였던 문제이지만 생각보다 간단했던 문제이기도 하다:
def solution(num):
i = 0
while True:
if num == 1:
return i
break
if i == 500:
return -1
if num%2 == 0:
i += 1
num = num/2
else:
i += 1
num = (num*3) + 1
while
문으로 지속적으로 돌려주되, 500번이 되는 순간에도 답이 안 나온다면 -1을 되돌려주게끔 설정을 했고, i=0
이라는 값을 주고, 이 i
값을 몇번 반복해야 되는지 횟수를 저장하는 값으로 사용한다.
만약 num
이 1
되는 순간이 온다면, i
값을 되돌려주고, while
문을 끝내준다. 그리고 num
값이 2로 나누어진다면 i
값에 1을 더해주고 num
이라는 숫자는 원래 num
값의 절반이 되도록 설정해준다. num
값이 2로 나누어지지 않는다면 i
값에 1을 더해주고, num
값은 본래의 num
값에 3을 곱해주고 1을 더해도록 설정했다.