Baekjoon Online

[python] 백준 1019번_책 페이지

dalgorithm 2021. 1. 10. 19:40
728x90

출처: www.acmicpc.net/problem/1019

 

1019번: 책 페이지

첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다.

www.acmicpc.net

책 페이지 성공출처분류

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 8318 2023 1583 36.332%

문제

지민이는 전체 페이지의 수가 N인 책이 하나 있다. 첫 페이지는 1 페이지이고, 마지막 페이지는 N 페이지이다. 각 숫자가 전체 페이지 번호에서 모두 몇 번 나오는지 구해보자.

입력

첫째 줄에 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다.

예제 입력 1

11

예제 출력 1

1 4 1 1 1 1 1 1 1 1


 

소스코드 풀이는 아래와 같다. 오늘 문제의 경우, 세부 설명은 코드에 추가하였다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pageNumber = int(input())
number= [0 for i in range(10)]
count = 1
while pageNumber != 0:
    while pageNumber % 10 != 9#일의 자리가 9가 아닐 경우
        for i in str(pageNumber):
            number[int(i)] += count
        pageNumber -= 1
    if pageNumber< 10#페이지수가 10보다 작을 경우는 0제외 1씩 증가
        for i in range(pageNumber + 1):
            number[i] += count
        number[0-= count
        break
    else:
        for i in range(10): 
            number[i] += (pageNumber // 10 + 1* count
            #예를 들어 23페이지라면 3개씩 증가, 십의자릿수로 결정
    number[0-= count
    count *= 10 #자릿수 만큼 곱해주기
    pageNumber //= 10
for i in number:
    print(i, end=' ')
cs

 

728x90