백준 실버3 1951 활자 - Python
https://www.acmicpc.net/problem/1951
1951번: 활자
옛날에는 책을 만들 때, 한글자 한글자를 나눠서 활자를 만들어서 그걸 합쳐서 책을 만들었다고 한다. 예를 들면 가나다라는 글씨를 쓰기 위해서는 3개의 활자가 필요할 것이다. 그렇다고 할 때,
www.acmicpc.net
문제
코드
맞았습니다가 뜬 코드입니다. - 메모리 31256KB | 시간 44ms | 코드 길이 302B
import sys
input = sys.stdin.readline
N = int(input())
result = 0
temp = 1 # N보다 작은 1, 10, 100, .. 단위의 수
cnt = 1 # N의 자릿수
while N // temp >= 10:
cnt += 1
temp = temp * 10
n = 9 # 9, 90, 900 으로 늘어나는 1~9, 10~99, 100~999, ...의 사이 수의 개수
for i in range(1, cnt+1):
if i == cnt: # N의 자릿수라면 해당 자릿수에서 뺌
result += (N - temp + 1) * i
else: # N의 자릿수보다 작으면 9, 90, .. 등의 사이 수 더해줌
result += n * i
n = n * 10
print(result % 1234567)
후기
왜 자꾸 틀렸다는 거야 하면서 출력조건을 보니까 1234567을 나누라고 하더라고요 촤ㅡ하ㅡㅋ(쿨한 사람의 웃음소리)
이런이런.. 인간적이야... 훗.
그냥 생각하기 귀찮지만 조금만 생각하면 풀 수 있었던 문제였던 것 같습니다 ㅇ<-<
'코딩테스트' 카테고리의 다른 글
[백준] 1448번 삼각형 만들기 - Python (3) | 2023.02.16 |
---|---|
[백준] 1213 팰린드롬 만들기 - Python (3) | 2023.02.15 |
[백준] 4779 칸토어 집합 - Python (0) | 2023.02.14 |
[백준] 5587 카드 캡터 상근이 - Python (0) | 2023.02.13 |
[백준] 1913 달팽이 - Python (2) | 2023.02.12 |