파이썬으로 풀다가 도저히 무한루프에 빠지는 이유를 못 찾겠어서 c++로 옮겨서 풀었더니 맞았던 그런... 문제다. 단순히 구현만 하면 성공인데 파이썬에서는 무한 로딩에 빠져버린다. 아직 문법 숙지를 못해서 그런거같다.
<맞은 c++코드>
#include <iostream>
using namespace std;
int n, m, tmp, ans;
int main()
{
cin >> n;
if (n == 0)
{
cout << 1 << '\n';
return 0;
}
while (n != tmp)
{
if (ans == 0)
tmp = n;
if (tmp > 9)
m = (tmp / 10) + (tmp % 10);
else
m = tmp;
tmp = ((tmp % 10) * 10) + (m % 10);
ans++;
}
cout << ans << '\n';
return 0;
}
<틀린 python 코드>
n = int(input())
m = 0
tmp = 0
ans = 0
while tmp != n:
if ans == 0:
tmp = n
if tmp > 9:
m = (tmp/10)+(tmp % 10)
else:
m = tmp % 10
tmp = ((tmp % 10)*10)+(m % 10)
ans += 1
print(ans)
0 예외처리를 제외하면 두 코드가 동일한 기능을 하는것처럼 보이는데 왜 입력을 여러번 받는걸까?
에서 뭔가 싸한 느낌이 들어서 기본 문법을 찾아봤는데.../
도 문제가 됐던거 같다. 저렇게 처리해버리면 수가 실수로 나올다. 내가 원하는건 //
를 써야 된다. 고쳐도 제대로 동작 안하긴 했음ㅋㅋ
형식 말고는 식이 다 틀린거 같아서 처음부터 다시 작성하기로 결정했다.
좀더 깔끔하고 짧게 작성했다.
<맞은 python 코드>
n = int(input())
tmp = n
ans = 0
while True:
a = tmp//10+tmp % 10
tmp = tmp % 10*10+a % 10
ans += 1
if tmp == n:
break
if n == 0:
print(1)
else:
print(ans)