[Python][백준 1110] 더하기 사이클

Date:     Updated:

카테고리:

태그:

🔄 더하기 사이클 문제 풀이

백준 1110번 더하기 사이클 문제의 파이썬 풀이

📝 문제 설명

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 이러한 과정을 반복하여 원래 수로 돌아올 때까지의 사이클의 길이를 구하는 프로그램을 작성하시오.

💡 풀이

이 문제는 주어진 규칙에 따라 새로운 수를 만들어가면서, 원래 수로 돌아올 때까지의 횟수를 세는 문제이다. 각 자릿수를 분리하고 더한 후 새로운 수를 만드는 과정을 반복한다.

🔍 코드 설명

  1. 입력받은 수를 저장하고 사이클 횟수를 0으로 초기화한다.
  2. 다음 과정을 반복한다:
    • 현재 수의 십의 자리와 일의 자리를 분리한다.
    • 두 자리를 더한다.
    • 기존 수의 일의 자리와 합의 일의 자리를 이어붙인다.
    • 사이클 횟수를 1 증가시킵다.
  3. 새로운 수가 원래 수와 같아지면 반복을 종료한다.

✨ 참고

  • 나눗셈 연산자 /가 아닌 //를 사용하여 정수 나눗셈을 수행한다.
  • 나머지 연산자 %를 사용하여 일의 자리 수를 구한다.
  • while 문의 조건을 통해 첫 번째 사이클은 무조건 실행되도록 한다.

🎯 주의사항

  • 입력값이 한 자리 수여도 문제없이 동작해야 한다.
  • 사이클의 길이는 1 이상이다.

📝 코드

import sys

target_number = int(sys.stdin.readline().strip())

n1 = target_number
index = 0

while index == 0 or n1 != target_number:
    a = n1 // 10
    b = n1 % 10
    n1 = b * 10 + (a + b) % 10
    index += 1

print(index)

Python Coding Test 카테고리 내 다른 글 보러가기