양의 정수 n이 있다고 가정하고 Collatz 시퀀스의 길이를 찾아야 합니다. 우리가 알고 있듯이 Collatz 시퀀스는 n이 n =3n+ 1일 때 n =n/2일 때 순차적으로 생성됩니다. 그리고 이 시퀀스는 n =1일 때 끝납니다.
따라서 입력이 n =13과 같으면 출력은 [13, 40, 20, 10, 5, 16, 8, 4, 2, 1]이 시퀀스이므로 10이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- num이 0과 같으면
- 0을 반환
- 길이:=1
- num이 1과 같지 않으면 do
- num :=(num / 2) num mod 2가 0이면 그렇지 않으면 (3 * num + 1)
- 길이 :=길이 + 1
- 반환 길이
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, num): if num == 0: return 0 length = 1 while num != 1: num = (num / 2) if num % 2 == 0 else (3 * num + 1) length += 1 return length ob = Solution() print(ob.solve(13))
입력
13
출력
10