문제
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.
26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
import sys
N=int(sys.stdin.readline())
save_N=N
count=0
while True:
if(save_N<10):
save_N*=11
count+=1
else:
save_N=10*(save_N%10)+(save_N//10+save_N%10)%10
count+=1
if(save_N==N):
print(count)
break
※ 반복문
● 우선 주어진 숫자 N과 비교할 변수(save_N_)의 초기값을 N으로 생성해준다.
● 그 뒤 무한루프를 돌며 조건에 맞게 save_N을 변경시켜준 후 count변수의 값을 1씩 증가시켜준다.
● save_N을 알맞게 변경시켜주었다면 루프 마지막에 save_N과 N의 값이 같아질 시 count를 출력하고 루프를 탈출하는 조건을 추가해주면 끝!!
'백준(baekjoon) > 브론즈' 카테고리의 다른 글
백준(baekjoon) 4344번: 평균은 넘겠지(브론즈 1, 파이썬 PYTHON) - 1차원 배열 (0) | 2022.08.30 |
---|---|
백준(baekjoon) 3052번: 나머지 (브론즈 2, 파이썬 PYTHON) - 반복문 (0) | 2022.08.30 |
백준(baekjoon) 2439번: 별 찍기-2 (브론즈 4, 파이썬 PYTHON) - 반복문 (0) | 2022.08.30 |
백준(baekjoon) 2438번: 별 찍기 (브론즈 5, 파이썬 PYTHON) - 반복문 (0) | 2022.08.30 |
백준(baekjoon) 2525번: 오븐시계(브론즈3, 파이썬 PYTHON) - 조건문 (0) | 2022.08.29 |