Algorithm/Baekjoon

단계별로 풀기 4단계 while문 - 더하기 사이클(1110번 문제) Python3 답안

Bonita SY 2019. 10. 11. 00:58
728x90
반응형

이 문제 역시 런타임 에러가 너무 많이 나서, 찾아봤다..

 

답안)

origin_num = int(input())

if not(0 <= origin_num <= 99):
  exit()
else:
  new_num = origin_num
  index = 0

  while True:
    ten_num = 0
    one_num = new_num
    if (new_num > 9):
      ten_num = int(new_num / 10)
      one_num = new_num % 10

    sum_num = ten_num + one_num
    if (sum_num > 9):
      sum_num %= 10

    new_num = sum_num
    if (one_num > 0):
      new_num += (10 * one_num)

    index += 1
    if (new_num == origin_num):
      break;
  print(index)

런타임난 코드)

origin_num = int(input())

if (origin_num == 0):
  print(0)
else:
  new_num = origin_num
  index = 0

  while True:
    ten_num = 0
    one_num = new_num
    if (new_num > 9):
      ten_num = int(new_num / 10)
      one_num = new_num % 10

    sum_num = ten_num + one_num
    if (sum_num > 9):
      sum_num %= 10

    new_num = sum_num
    if (one_num > 0):
      new_num += (10 * one_num)

    index += 1
    if (new_num == origin_num):
      print(index)
      exit(1);

나같은 경우는 input으로 받는 origin_num이 0과 99 사이에 있는지를 체크해주는 부분이 없으면 런타임 에러가 났다..;

다른 문제는 입력 조건 확인 안하잖아..;;

난 저것 때문인지도 모르고 값이 0인데 나눠서 그런가 하고, 0 일 때와 아닐 때 다 체크해줬네..


문제)

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 =

www.acmicpc.net


참조한 블로그)

- https://this-programmer.com/entry/%EB%B0%B1%EC%A4%801110%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%8D%94%ED%95%98%EA%B8%B0-%EC%82%AC%EC%9D%B4%ED%81%B4

728x90
반응형