새소식

PS/백준

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

  • -

Problem : https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

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

www.acmicpc.net

 

Difficulty : Bronze 1

 

Status : Solved

 

Time : 00:05:35

 


 

문제 설명

 

더보기

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의 사이클의 길이를 구하는 프로그램을 작성하시오.

 

입력 및 출력

 

더보기

입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.

 

출력

첫째 줄에 N의 사이클 길이를 출력한다.

 

입력 예시

26

 

출력 예시

 

4

 

 


 

풀이

 

간단한 구현 문제. 반복은 최대 100회 이내에 종료되므로, 문제에서 제시하는 조건대로 구현하여 직접 사이클을 구해 볼 수 있다.

 

풀이 코드

N = int(input())

num_visited = [False]*100

num, cnt = N, 0

while not num_visited[num] :
  num_visited[num] = True
  _num = (num // 10 + num % 10)
  num = (num % 10) * 10 + _num % 10
  cnt += 1

print(cnt)

풀이 완료~

'PS > 백준' 카테고리의 다른 글

[백준/1904] 01타일 (Python)  (0) 2023.05.14
[백준/11057] 오르막 수 (Python)  (0) 2023.05.11
[백준/1726] 로봇 (Python)  (0) 2023.05.09
[백준/3109] 빵집 (Python)  (0) 2023.05.08
[백준/1520] 내리막 길 (Python)  (1) 2023.05.08
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.