본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 14920번 : 3n+1 수열

by 빛밤하늘 2021. 7. 1.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

14920번: 3n+1 수열

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

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin


# C(1)을 입력합니다.
# 1 <= C(1) <= 100,000
# 정수형으로 변환합니다.
C = int(stdin.readline())

# 수열의 n을 저장하는 변수를 선언합니다.
n = 1
# 수열에서 1을 찾을 때까지 반복합니다.
while True:
    # 처음으로 1이 나온다면
    if C == 1:
        # 1의 n을 출력합니다.
        print(n)
        # 1을 찾았으므로 반복문을 탈출합니다.
        break

    # C(n)이 짝수일 때
    if C % 2 == 0:
        # C(n+1) = C(n)/2를 계산해줍니다.
        C //= 2
    # C(n)이 홀수일 때
    else:
        # C(n+1) = 3*C(n)+1을 계산해줍니다.
        C = 3 * C + 1

    # n에 1을 더해줍니다.
    n += 1

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글