
코드 입력
N = int(input())
count = 0
cf = N
while N < 100:
T = (N // 10) + (N % 10)
# 8 2 6
New = (N % 10) * 10 + (T % 10)
# 68 6 X 10 + 8
count += 1
N = New
if New == cf:
break
print(count)
얼른 풀고 맥주 먹고 잘라 그랬는데 1시간을 소모한 문제..
문제를 읽고 어느정도 로직은 머릿 속에 그려졌지만,
formatting과 try / except, 정말 여러가지 방법을 사용해보았지만
무한반복에 빠지거나 ~~머리가 빠지거나~~ 둘 중 하나
결국 참조를 해보았다.
count와 N에 동등한 값을 갖는 새로운 변수를 생성하는 것이 답이었다.
26 이라면, 2 + 6 = 8 이고 다음 수가 68로 만들어지는 과정을 만들기 위해,
N을 10으로 나눈 몫과 나머지 값을 이용하는 로직.
그리고 68을 만들기 위해 나머지 값에 10을 곱하고, T가 10이 넘을 수도 있으니 일의 자릿 수만 빠져나오게 하기 위해
10으로 나누어 준 나머지 값을 사용.
이 루프를 돌릴 때마다 count가 1씩 늘어나게 함수를 생성하고,
사실
N = New이 부분에서 if 문 전에 왜 N = New라는 식을 생성한지는 이해가 되지 않는다..
기회가 닿는다면 질문해봐야겠다
오늘 하루도 힘들었따