728x90
출처: www.acmicpc.net/problem/1019
책 페이지 성공출처분류
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
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
'Baekjoon Online' 카테고리의 다른 글
[C++] 백준 2839번_설탕 배달 (0) | 2021.01.12 |
---|---|
[python] 백준 1652번_누울 자리를 찾아라 (0) | 2021.01.11 |
[python] 백준 1935번_후위 표기식2 (0) | 2021.01.09 |
[C] 백준 2562번_최댓값 (0) | 2021.01.08 |
[C] 백준 2588번_곱셈 (0) | 2021.01.07 |