어렵게 보였던 문제이지만 생각보다 간단했던 문제이기도 하다:
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을 더해도록 설정했다.
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: 하샤드 수> Level 1 - 파이썬 (0) | 2020.11.26 |
---|---|
<프로그래머스 문제풀이: 평균 구하기> Level 1 - 파이썬 (0) | 2020.11.25 |
<프로그래머스 문제풀이: 최대공약수와 최소공배수> Level 1 - 파이썬 (0) | 2020.11.23 |
<프로그래머스 문제풀이: [카카오 인턴] 키패드 누르기> Level 1 - 파이썬 (0) | 2020.11.19 |
<프로그래머스 문제풀이: 짝수와 홀수> Level 1 - 파이썬 (0) | 2020.11.19 |