더하기 싸이클

a=list(input())

count=0
current=a[0]
last=a[1]

while current != int(a[0]) or last != int(a[1]):
  tmp = int(last)
  last = int(current) + int(last)
  if last > 9:
    last = last%10
  current = tmp
  count += 1
  print(current,last);

print(count);

런타임 에러남. 백준은 형변환을 여러번하면 런타임에러가 나는듯. 근데 그보다 나이브하지 않은 알고리즘을 짜고싶다.

#해답
a=int(input())

count=1
if a<10:
  A = a
  B = 0
else:
  A = a/10
  B = a%10

current=B
last=A+current

while current != A or last != B:
  tmp = last
  last = current + last
  if last > 9:
    last = last%10
  current = tmp
  count += 1

print(count);

여전히 나이브하지만 형변환은 1번만 일어난다. list로 인자를 빼오던것을 나눗셈으로 대체했다.

python3에서 34/103.4가나온다는 사실에 충격을 받았다.

results matching ""

    No results matching ""