1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
이전 풀이
https://dmaolon00.tistory.com/9
[백준_python] math_factorial || 11050, 1110
math라는 모듈 안에는 다양한 함수들이 있는데 그 중 factorial함수를 불러와 사용한다. from math import factorial 1. 이항 계수 www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)..
dmaolon00.tistory.com

입력한 수의 십의 자리와 일의 자리를 합하고, 일의 자리를 십의 자리로, 합을 일의 자리로 재배열해가는 과정이다.
ex)
26 → 68 (2+6)→ 84 (6+8=14) → 42 (8+4=12) → 26 (4+2)
이전 풀이를 보면, 주어진 수를 10으로 나누어 몫과 나머지를 구하여서 while문을 통해 계산해주었다.
이번에는 몫과 나머지를 구하지 않고, 문자열을 이용하여 구해주도록 하였다.
# 더하기 사이클_4 (문자열)
n = a = input()
cnt = 0
if(int(a) < 10):
a = "0" + a # 주어진 수가 10보다 작은 경우, 앞에 0을 붙여줌
while(True):
cnt += 1
b = str(int(a[0]) + int(a[1]))
if(int(b) >= 10):
b = b[1]
a = a[1] + b
if(int(a) == int(n)):
print(cnt)
break
문자열임을 이용하여 a[0] , a[1]로 해주며 십의 자리와 일의 자리를 이용할 수 있도록 하였다.
자료형을 변환해주며 문자열일 경우 "1" + "2" = "12"이 되도록 해주었다.
처음 보자마자 문자열로 해야지 하고 해두고서 나중에 예전 풀이를 보면서 아.. 이렇게 몫과 나머지로 해줬었구나를 깨달았다.
시간을 비교해보면 예전 풀이가 좀더 시간이 적게 걸렸던 것을 보면, 자료형을 계속 변환해주어서 시간차이가 발생한 게 아닐까 싶었다.