A. Digits Sum | Harbour.Space Scholarship Contest

LONGNEW·2021년 7월 23일
0

CP

목록 보기
58/155

https://codeforces.com/contest/1553/problem/A
시간 1초, 메모리 256MB

input :

  • t (1 ≤ t ≤ 1000)
  • n (1 ≤ n ≤ 109)

output :

  • Print t integers, the i-th should be the answer for the i-th test case.
    t개의 정수를 출력하시오.

조건 :

  • Let's define S(x) to be the sum of digits of number x written in decimal system. For example, S(5)=5, S(10)=1, S(322)=7.
    S(x)를 x의 숫자들을 더한 값이라 합니다. 예를 들어 S(5)=5, S(10)=1, S(322)=7이 됩니다.

  • We will call an integer x interesting if S(x+1) < S(x)
    만약 S(x+1) < S(x)인 수가 존재한다면 interesting하다 합니다.


interesting한 수의 조건은 마지막 자리가 9여야 합니다.
그런 경우 x + 1의 값은 숫자의 개수는 1개 늘지만 이 값은 1이 되고 x의 값은 숫자의 개수는 적지만 이 값이 9이기 때문에 위의 조건을 만족합니다.

간과한 부분

그렇기 때문에 9보다 크거나 같은 값들 중에 10으로 나눠서 얻은 값을 출력하게 하였습니다.

예외

이 떄 숫자의 마지막이 9로 끝나는 경우를 포함하지 않아 이러한 테케에서 실패가 있었다.
그렇기에 나머지를 계산해서 9인 경우에 정답의 개수를 하나 더 늘려주고
정답을 출력하게 하는 방법이 제일 좋다.

import sys

t = int(sys.stdin.readline())
for _ in range(t):
    n = int(sys.stdin.readline())
    ans = n // 10

    if n % 10 == 9:
        ans += 1

    print(ans)

계속 9를 가지는 수가 맞긴 한데 왜 첫 제출이 안 되지 하면서 B로 넘어가는 바람에 중간에 공간이 생겼다.
문제 자체를 이해는 했는데 정확한 알고리즘을 생각하지 않은 것이 시간을 많이 가져갔다.

0개의 댓글