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