문제링크 : https://www.acmicpc.net/problem/1110
: 단순하게 자릿수를 나누어 합치자고 생각
: 코드블럭 첨부할 것
import sys
n = sys.stdin.readline().strip()
sum_int = 0
cycle = 0
sum_n = ''
new_n = ''
if len(n) <= 1:
n = '0' + n
chck_n = n
while chck_n != new_n:
cycle += 1
# for _ in range(0,4):
# print('n: ', n)
for l in n:
# print('l: ', l)
sum_int += int(l)
if sum_int < 10:
new_n = n[-1] + str(sum_int)
else:
new_n = n[-1] + str(sum_int)[-1]
# print('sum_int: ', sum_int)
# print('new_n: ', new_n)
n = new_n
sum_int = 0
# if cycle == 61:
# break
print(cycle)
valueError: invalid literal for int() with base 10: '\n'
문자열 뒤에는 내장으로 '\n'이 들어있다는 점을 몰라서 생긴 에러였다.
맨처음엔 rstip()
으로 뒤에 공백만 제거했으나, while문 진행 중 앞에도 공백이 생김을 감지해서
strip()
을 통해 앞, 뒤 공백 모두 제거했다.
n = sys.stdin.readline().strip()
sum_int = 0
cycle = 0
sum_n = ''
new_n = ''
작성하고 시작한 변수 모음이다. 이를 통해서
while n != new_n:
으로 반복문 조건을 세웠었는 데,
아래 n이 계속 new_n으로 업데이트 되는 구조 상 while문 진행이 불가능함을 깨달았다.
n = sys.stdin.readline().strip()
strip()
을 통해 문자열 앞, 뒤에 들어있는 공백을 제거 할 수 있다는 점
이를 통해서 헤매던 모든 문제들이 해결되었다.