BOJ

BOJ 1110번 더하기 사이클 파이썬

이도울 2022. 1. 12. 20:27
SMALL

1. 문제 링크

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

2. 문제 이해

우선, 입력 받은 수가 10이상인지 아닌지부터 판단해야한다. 만약 10보다 작으면 0을 붙여준 상태로 시작해야한다. 그 다음에는 각 자리의 수를 더한 뒤에 나온 값의 가장 오른쪽 한 자리 숫자와 더하기 전 결과의 일의 자리 숫자를 이용하여 또 다른 숫자를 만든다. 그 과정을 계속 반복하다가 처음의 입력한 수와 같게(10미만의 숫자인 경우는 0을 붙여준 숫자가 처음 입력한 수라고 가정) 나온다면 반복한 과정의 횟수를 출력하면 될 것 같다.

 

3. 풀이

풀이는 주석을 참고!

n = int(input()) # n을 정수형으로 입력받는다.
num = n
cnt = 0 #사이클 횟수를 저장할 변수

while 1:
  a = num // 10 # 입력 받은 숫자를 10으로 나눈 뒤에 몫만 취해서 십의 자리를 a에 저장한다.
  b = num % 10 # 입력 받은 숫자를 10으로 나눈 뒤에 나머지만 취해서 일의 자리를 b에 저장
  c = (a + b) % 10 # 두 숫자를 더한 뒤에 가장 오른쪽(일의 자리)의 부분만 c에 저장한다.
  num = (b * 10) + c # 전의 일의 자리와 덧셈 실행 후 일의 자리를 조합하여 새로운 숫자를 만든다.
    
  cnt += 1 # 사이클 수를 한번 증가시킨다. 덧셈 실행이 처음에 일어나므로, break 전에 작성해준다.
  if (num == n):
    break
        
print(cnt)
LIST

'BOJ' 카테고리의 다른 글

BOJ 17608번 막대기  (0) 2022.01.13
백준 2884번 알람시계 파이썬  (0) 2022.01.13
BOJ 1157 단어공부 파이썬  (0) 2022.01.12
BOJ 11399번 ATM  (0) 2022.01.01
BOJ 2839번 문제 설탕배달 코드 (파이썬)  (0) 2022.01.01