https://www.acmicpc.net/problem/1110
num = int(input())
answer = num
count = 0
while True:
ten = num // 10
one = num % 10
num = ((ten + one) % 10) + one * 10
count += 1
if answer == num:
break
print(count)
풀이하는데 오래걸렸다. 그래서 전에 작성했던 답안을 참고했다.
입력받는 숫자가 10보다 작은 1의 자리숫자일때에 갇혀서 다른부분을 고려하지 못했다.
결국은 두자리의 숫자라 최대이기때문에 한 로직으로 해결할수있는 부분인데 말이다.
정리하면
1. 입력받은 숫자를 10의 자리로 나눈 몫을 구한다.
2. 입력받은 숫자를 10으로 나눈 나머지 값을 구한다.
3. 이 두 숫자를 더해한 숫자의 일의 자리를 구하고, 2번에서 구한 숫자에 10을 곱해서 더해준다.
4. 위의 과정이 끝난후 횟수를 한번 더해준다.
5. 처음의 입력받은 값과 비교해서 같으면 반복문에서 나온다.
n = input()
num = n
cnt = 0
while True:
if len(num) == 1:
num = "0" + num
plus = str(int(num[0]) + int(num[1]))
num = num[-1] + plus[-1]
cnt += 1
if num == n:
print(cnt)
break;
문제를 풀면서 정수말고 문자열로도 풀수있을 것 같다는 생각을 했었다. 그래도 문자열보다는 정수형으로 푸는 방법이 익숙하기때문에 참았었는데, 역시 이와 관련된 풀이방법이 있었다.