자연수 n이 주어집니다. n에서 시작하여 n이 짝수면 2로 나누고, n이 홀수면 3을 곱하고 1을 더하는 것을 n이 1이 되기 전까지 계속 반복하려고 합니다. 총 몇 번을 반복해야 1이 되는지를 계산하는 프로그램을 작성해보세요.
예를 들어 n = 3인 경우 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1 순서로 1이 되므로 답이 7이 됩니다.
이 문제에서는 총 m번에 걸쳐 n 값이 주어집니다. 각각의 경우에 대해 주어진 n이 1이 되는데 걸리는 횟수를 구해야 합니다.
# 변수 선언 및 입력
m = int(input())
# m회 반복합니다.
for _ in range(m):
# 변수 선언 및 입력
n = int(input())
ans = 0
# n이 1이 될 때까지 3n + 1을 반복합니다.
while n != 1:
if n % 2 == 0:
n /= 2
else:
n = n * 3 + 1
ans += 1
print(ans)
# 나의 풀이 ----------------------------------
m = int(input())
for _ in range(m):
n = int(input())
cnt = 0
while n != 1:
if n % 2 == 0:
n /= 2
else:
n = n * 3 + 1
cnt += 1
print(cnt)
'Python > [코드트리]' 카테고리의 다른 글
[코드트리] n번 반복 > 약수의 개수가 3개인 수 (0) | 2023.06.27 |
---|---|
[코드트리] n번 반복 > 완전수 (0) | 2023.06.27 |
[코드트리] 알파벳 출력 > 알파벳 출력하기 2 (0) | 2023.06.27 |
[코드트리] 알파벳 출력 > 알파벳 출력하기 (0) | 2023.06.27 |
[코드트리] 알파벳 출력 > 정사각 알파벳 출력하기 (0) | 2023.06.27 |