https://www.acmicpc.net/problem/1110
문제 풀이
- N의 일의 자리가 십의 자리가 되고 N의 합의 일의 자리가 일의 자리가 된다.
- 예를 들어 N = 26이라면
- N = 26 => 2 + 6 = 8
- N = 68 => 6 + 8 = 14
- N = 84 => 8 + 4 = 12
- N = 42 => 4 + 2 = 6
- N = 26
- N이 이러한 루프를 통해 원래 수까지 돌아오는 횟수를 출력하면 된다.
solution
import sys
N = sys.stdin.readline().strip() # '26'
# result에 N값을 할당한다. => 나중에 while문의 종료조건으로 값이 변한 N값과 비교하기 위함
result = N # 26
cnt = 0
while True:
# N의 각 자리수를 담은 리스트
N_list = list(map(int,N)) # [2,6] int
# N의 각 자리수를 더한 값의 일의 자리 수
N_sum_last = str(sum(N_list))[-1] # '8'
# 새로운 수인 N = 그 전 사이클의 N의 일의 자리에 *10을 하고 각 자리수를 더한 값의 일의 자리수를 더해주면 됨
N = str(N_list[-1]*10 + int(N_sum_last)) # '68'
cnt += 1
# 새로운 수가 된 N값과 맨 처음의 N값을 담았던 result값이 같으면 카운팅을 출력하고 whlie문을 빠져나감
if N == result:
print(cnt)
break
'algorithm > 백준' 카테고리의 다른 글
[PYTHON] 11021 A+B -7 (0) | 2023.01.18 |
---|---|
[PYTHON] 15552 빠른 A+B (0) | 2023.01.18 |
[PYTHON] 10809 알파벳 찾기 - 인덱스찾기/.find()/.index()/아스키코드 (0) | 2023.01.16 |
[PYTHON] 11654 아스키코드 - 문자를 아스키 코드로, 아스키 코드를 문자로 (0) | 2023.01.16 |
[PYTHON] 11720 숫자의 합 (0) | 2023.01.16 |
댓글