흙금이네 블로그

[BOJ] 1019 - 책 페이지 (Python) 본문

알고리즘

[BOJ] 1019 - 책 페이지 (Python)

흙금 2023. 4. 13. 15:05

 

 

아이디어

 

N의 자릿값에 따라 각 숫자가 나오는 횟수를 계산한다.

 

 

풀이

 

def solution():
    N = int(input())
    number = list(map(int, [*str(N)]))[::-1]
    M = len(number)
    res = [0]*10
    for i in range(M-1):
        p = 10**i
        if i == 0:
            res[0] += N//10
        else:
            if number[i] > 0:
                res[0] += (N//(p*10))*p
            else:
                res[0] += (N//(p*10)-1)*p+(N%p+1)
    for i in range(M):
        p = 10**i
        for num in range(1, 10):
            if number[i] > num:
                if i == 0:
                    res[num] += N//10+1
                elif i == M-1:
                    res[num] += p
                else:
                    res[num] += (N//(p*10)+1)*p
            elif number[i] == num:
                if i == 0:
                    res[num] += N//10+1
                elif i == M-1:
                    res[num] += N%p+1
                else:
                    res[num] += (N//(p*10))*p+(N%p+1)
            else:
                if i == 0:
                    res[num] += N//10
                elif i != M-1:
                    res[num] += (N//(p*10))*p
    print(*res)

solution()

 

'알고리즘' 카테고리의 다른 글

[BOJ] 10423 - 전기가 부족해 (Python)  (0) 2023.04.15
[BOJ] 1865 - 웜홀 (Python)  (0) 2023.04.14
[BOJ] 2482 - 색상환 (Python)  (0) 2023.04.13
[BOJ] 12886 - 돌 그룹 (Python)  (0) 2023.04.13
[BOJ] 3108 - 로고 (Python)  (0) 2023.04.13
Comments