백준(Python) 풀이/수학

백준(Python) 14920 3n+1 수열 풀이

개발윗미 2021. 11. 10. 13:01

Python으로 구현한 14920번 3n+1 문제 풀이입니다.

 

https://www.acmicpc.net/problem/14920

 

14920번: 3n+1 수열

다음의 점화식에 의해 정해지는 수열 C(n)을 생각하자: C(n+1) = C(n)/2 (C(n)이 짝수일 때) = 3*C(n)+1 (C(n)이 홀수일 때) 초항 C(1)이 자연수로 주어지면, 이 점화식은 자연수로 이루어지는 수열을 정한다.

www.acmicpc.net


n = int(input())
count = 0

while True :
  if n == 1 :
    count += 1
    break
  if n % 2 == 0 :
    n //= 2
    count += 1
  else :
    n = 3 * n + 1
    count += 1

print(count)

 

1. while문을 통해 n의 값이 1이 될때까지 반복 수행한다.

 

2. while문 내에서는 조건문을 통해 n의 값이 짝수일 경우 n을 2로 나눈 몫을 다시 n에 갱신한다. 

 

  해당 작업이 끝나면 count 값을 1 증가시킨다.

 

3. n의 값이 홀수일 경우 3 * n + 1 과 같이 계산하여 다시 n에 갱신한다.

 

  해당 작업이 끝나면 count 값을 1 증가시킨다.

 

4. n이 1일 될 경우 해당 수행작업 횟수도 포함시켜야하기 때문에 count값을 1 증가시킨 후 반복문을 종료한다.