본문 바로가기
2022 하반기/Python

백준 1019 python

by concho 2023. 2. 17.

https://www.acmicpc.net/problem/1019

 

1019번: 책 페이지

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

www.acmicpc.net

 

import sys
input_func = sys.stdin.readline

# count_digits 함수는 숫자 'num'과 숫자 'digit'을 입력받습니다.
# 그리고 1부터 'num'까지의 모든 숫자에서 'digit'이 몇 번 나오는지 계산하여 반환합니다.
def count_digits(num, digit):
    # 'digit_count'는 숫자 'num'의 자릿수입니다.
    digit_count = len(str(num)) - 1
    # 'first_digit'은 숫자 'num'의 첫 번째 숫자입니다.
    first_digit = int(str(num)[0])
    if digit_count == 0:
        if digit > first_digit:
            return 0
        else:
            return 1
    # 'result'는 첫 번째 숫자에서 'digit'이 몇 번 나오는지 계산한 결과입니다.
    result = first_digit * digit_count * 10**(digit_count-1) + count_digits(num - first_digit * 10**digit_count, digit)
    if digit > first_digit:
        return result
    if digit == first_digit:
        return result + (num - first_digit * 10**digit_count + 1)
    if digit == 0:
        return result + (digit_count - len(str(num - first_digit * 10**digit_count))) * (num - first_digit * 10**digit_count + 1) + 10**digit_count
    return result + 10**digit_count

# count_zeros 함수는 숫자 'num'을 입력받아
# 1부터 'num'까지의 숫자 중 0이 몇 번 나오는지 계산하여 반환합니다.
def count_zeros(num):
    digit_count = len(str(num)) - 1
    result = 0
    for i in range(digit_count + 1):
        result += 10**i
    return result

N = int(input_func().strip())

print(count_digits(N, 0) - count_zeros(N), end=" ")
for i in range(1, 10):
    print(count_digits(N, i), end=" ")

 

(AI 가 대신하는 설명 + 주석도AI가)

이 코드는 1부터 N까지의 숫자에서 각 숫자(0부터 9까지)가 몇 번 나오는지 계산하는 프로그램입니다.

count_digits 함수와 count_zeros 함수가 각각 숫자 'digit'이 몇 번 나오는지 계산하는 함수와 0이 몇 번 나오는지 계산하는 함수입니다.

count_digits 함수는 재귀 호출을 이용해서 1부터 N까지의 숫자에서 'digit'이 몇 번 나오는지 계산합니다.

count_zeros 함수는 1부터 N까지의 숫자에서 0이 몇 번 나오는지 계산합니다.

마지막으로, count_digits 함수에서 0이 몇 번 나오는지 계산한 결과에서 count_zeros 함수에서 계산한 0이 몇 번 나오는지 결과를 빼서 0이 몇 번 나오는지 계산합니다. 그리고 1부터 9까지의 숫자가 각각 몇 번 나오는지 계산하여 출력합니다.

'2022 하반기 > Python' 카테고리의 다른 글

백준 8958 python  (0) 2023.02.20
백준 16205 python  (0) 2023.02.20
백준 10815 python  (0) 2023.02.17
Characteristics of python data type(파이썬 데이터 타입의 특성)  (0) 2023.02.16
백준 1931 Python  (0) 2023.02.08

댓글