1019. 책 페이지
업데이트 시간 : 2023-07-10 08:19:03 +0000[Gold I] 책 페이지 - 1019
성능 요약
메모리: 113112 KB, 시간: 116 ms
분류
수학
문제 설명
지민이는 전체 페이지의 수가 N인 책이 하나 있다. 첫 페이지는 1 페이지이고, 마지막 페이지는 N 페이지이다. 각 숫자가 전체 페이지 번호에서 모두 몇 번 나오는지 구해보자.
입력
첫째 줄에 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다.
💡 Solutions
📄 책 페이지.py
N = int(input())
lst = [ 0 for _ in range(10)]
# 0,1,2,3,4,5,6,7,8,9
# 10, 11,12,13,14,15,16,17,18,19
# 20, 21,22,23,24,25,26,27,28,29
# ...
# 100
def calc(n, ten):
while (n > 0):
lst[n%10] += ten
n //= 10
def solve(A, B, ten):
while (A% 10 != 0 and A<=B):
calc(A,ten)
A += 1
if (A > B) : return
while (B% 10 != 9 and B>=A):
calc(B,ten)
B -= 1
cnt = (B // 10 - A // 10 + 1)
for i in range(10):
lst[i] += cnt * ten
solve(A//10, B//10, ten*10)
solve(1, N, 1)
print(*lst)