dalgorithm
달공의 개발기
dalgorithm
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • Back-end (0)
    • Java (11)
    • 자료구조 (7)
    • Network (31)
    • Database (9)
    • Baekjoon Online (24)
    • 클라우드 (6)
    • Android (15)
      • Kotlin (14)
    • AI (27)
      • Machine Learning&Deep Learn.. (27)
    • Web (23)
      • Webhacking (17)
      • WebProgramming (6)
    • 기술면접 (1)
      • JAVA&자료구조 (0)
      • Spring (0)
      • 컴퓨터구조&운영체제 (0)
      • 네트워크 (0)
      • 데이터베이스 (0)
    • CTF 스터디 (15)
    • 대외활동 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Guacamole
  • 데이터베이스
  • 자료구조
  • 클라우드
  • python #백준
  • 딥러닝
  • db
  • CTF
  • java
  • 머신러닝
  • 자바
  • 코드리뷰
  • 인공지능
  • 침입탐지
  • 네트워크
  • gcp
  • cs
  • 포너블
  • 웹해킹
  • kotlin

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dalgorithm

달공의 개발기

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

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

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=' ')
Colored by Color Scripter
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
    'Baekjoon Online' 카테고리의 다른 글
    • [C++] 백준 2839번_설탕 배달
    • [python] 백준 1652번_누울 자리를 찾아라
    • [python] 백준 1935번_후위 표기식2
    • [C] 백준 2562번_최댓값
    dalgorithm
    dalgorithm

    티스토리툴바