주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측이다.
이전에 백준인가 어디서 한번 풀어봤던 문제였다.
while
문을 사용하면 쉽게 해결 할 수 있다.
해결 과정은 다음과 같다.
- n이 짝수 일 때, 기존 n에 2로 나눈 몫을 n으로 저장한다.
- n이 홀수 일 때, 기존 n에 3을 곱하고 1을 더한 n으로 저장한다.
- 1번과 2번의 과정을 거쳤다면 cnt를 1 증가시킨다.
- 만약, cnt가 500번 이상일때는 -1을 반환시키고 종료한다.
- n이 1보다 작거나 같아진다면
while
문을 종료시킨다.
def solution(n):
cnt = 0
while n > 1:
if n % 2 == 0:
n //= 2
else:
n = (n * 3) + 1
cnt+=1
if cnt >= 500:
return -1
return cnt
print(solution(626331))