스파르탄 365 1주차 (1) 더하기 사이클

새벽하늘·2021년 4월 14일
0
post-thumbnail

1주차

백준 1110번 더하기 사이클

문제링크 : 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)

🧐 막혔던 점과 고민

1. 형변환의 문제

valueError: invalid literal for int() with base 10: '\n'
문자열 뒤에는 내장으로 '\n'이 들어있다는 점을 몰라서 생긴 에러였다.
맨처음엔 rstip()으로 뒤에 공백만 제거했으나, while문 진행 중 앞에도 공백이 생김을 감지해서
strip()을 통해 앞, 뒤 공백 모두 제거했다.

2. 변수 사용의 문제

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() 을 통해 문자열 앞, 뒤에 들어있는 공백을 제거 할 수 있다는 점
이를 통해서 헤매던 모든 문제들이 해결되었다.

profile
만들고 싶은 거 다 만들 수 있는 그날까지

0개의 댓글