이전 풀이
https://dmaolon00.tistory.com/9
입력한 수의 십의 자리와 일의 자리를 합하고, 일의 자리를 십의 자리로, 합을 일의 자리로 재배열해가는 과정이다.
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"이 되도록 해주었다.
처음 보자마자 문자열로 해야지 하고 해두고서 나중에 예전 풀이를 보면서 아.. 이렇게 몫과 나머지로 해줬었구나를 깨달았다.
시간을 비교해보면 예전 풀이가 좀더 시간이 적게 걸렸던 것을 보면, 자료형을 계속 변환해주어서 시간차이가 발생한 게 아닐까 싶었다.
반응형