[백준] 1110 더하기 사이클 (python)

Soyeon Lee·2024년 7월 24일
0

코딩 테스트

목록 보기
3/9

백준 1110 더하기 사이클


코드

import sys

n = int(sys.stdin.readline())

def get_cycle(n):
    count = 0
    original_number = n

    while True:
        # 두 자리 수로 만들기
        if n < 10:
            n *= 10

        sum_digits = (n // 10) + (n % 10)
        n = (n % 10) * 10 + (sum_digits % 10)

        count += 1

        if original_number == n:
            break
    return count

print(get_cycle(n))
  • 위 코드는 시간 초과가 떴다
  • 확실한 원인은 모르겠으나, 불필요한 두 자리 수로 만들기 연산이 포함돼서 그런 것 같다
import sys

n = int(sys.stdin.readline())

original_number = n
count = 0

while True:
    sum_digits = (n // 10) + (n % 10)
    new_digits = (n % 10) * 10 + (sum_digits % 10)

    count += 1

    if original_number == new_digits:
        break

    n = new_digits

print(count)
  • 각 자리 숫자를 더하는 부분은 n // 10으로 십의 자리 숫자를 구하고, n % 10은 일의 자리 숫자를 구해, 두 숫자를 더한 것을 sum_digits에 저장함
  • n % 10으로 일의 자리 숫자를 구하고, sum_digits % 10로 두 숫자의 합의 일의 자리 숫자를 구해 이어 붙임

0개의 댓글