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 |