Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 트리
- 슬라이딩 윈도우
- 브루트포스
- 구현
- JavaScript
- 그래프
- Python
- BFS
- boj
- 맵
- 수학
- 2357
- 13164
- 투 포인터
- 에라토스테네스의 체
- 세그먼트 트리
- DFS
- 플로이드-워셜
- DP
- 애드 혹
- 그리디
- 정렬
- 누적 합
- 모던 JavaScript 튜토리얼
- 싸피
- 문자열
- 정수론
- 이분 탐색
- SSAFY
- 해시 테이블
Archives
- Today
- Total
흙금이네 블로그
[BOJ] 1019 - 책 페이지 (Python) 본문
아이디어
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