본문 바로가기

카테고리 없음

[백준 1081번] 합 (Python3)

import sys
input = sys.stdin.readline
from collections import deque

def page(N,n):
  c = len(str(N))-1
  a = int(str(N)[0])
  if c == 0:
    if n > a:
      return 0
    else:
      return 1
  result = a*c*10**(c-1) + page(N-a*10**c,n)
  if n > a:
    return result
  if n == a:
    return result + (N-a*10**c+1)
  return result + 10**c

def sumpage(N):
  result = 0
  for n in range(1,10):
    result += page(N,n)*n
  return result

L,U = map(int,input().split())
if L:
  L -= 1
print(sumpage(U)-sumpage(L))

책 페이지 [백준 1019번] 책 페이지 (Python3) (tistory.com) 문제의 하위호환문제이다.

책 페이지 문제의 경우 0의 개수를 세는거에서 애를 먹었었는데, 이 문제는 0을 신경쓰지 않아도 되기 때문에 매우 쉽게 풀 수 있다.

 

딱 하나 주의할 점은 L 값이 0인 경우 0 -1을 하면 -1이 되므로 코드에 에러가 날 수 있으니 이것만 주의하면 된다.

 

 

오늘의 교훈) 0을 조심하자