자연수 N이 주어짐.
N에서 시작해서 N이 짝수면 2로 나누고,
N이 홀수면 3을 곱하고 1을 더하는 것을 N이 1이 되기 전까지 계속 반복
총 몇 번을 반복해야 1이 되는지를 계산하는 프로그램 작성하기
ex.
N=3
3->(3*3+1)->5->(5*3+1)->8->4->2->1
총 7번
이 문제는 총 M번에 걸쳐 N값이 주어짐. 각각의 경우에 대해 주어진 N이 1이 되는지 걸리는 횟수를 구해라.
첫번째 줄에 M이 주어짐.
두번쨰 줄부터 M개의 줄에 걸쳐 N이 한줄에 하나씩 주어짐.
1. M개에 따라 N값들이 주어지므로, M번 행마다 N값들이 input됨.
2. 인풋된 값을 a라 두고, a가 홀수면, a*3+1 / 짝수면 a/2를 반복을 a=1이 될때까지 해야함.
3. 2번에서 반복될때마다 1씩 증가하는 변수가 있어야 하고, M번 행마다 이 변수는 초기화 되어야 함.
4. 2번의 결과값이 1이면 3번에서 만든 1씩 증가하는 변수가 출력되어야 한다.
n = int(input())
for _ in range(n) :
a = int(input())
cnt = 0
while a != 1 :
cnt += 1
if a % 2 != 0 :
a = a*3 + 1
else :
a //= 2
print(cnt)
문제 출처 : 코드트리
https://www.codetree.ai/trail-info
반응형
'Python > 코딩테스트' 카테고리의 다른 글
다중반복문 - 소수 구하기(bloon 변수활용) (0) | 2025.03.04 |
---|---|
다중반복문 - 완전 수 (0) | 2025.03.04 |
다중반복문 - ab곱 N번 구하기 (0) | 2025.03.04 |
다중반복문 - n번반복하기 (0) | 2025.03.04 |
다중반복문 - 알파벳 출력하기2 (0) | 2025.03.04 |