본문 바로가기
코딩테스트

[백준] 1951 활자 - Python

by CuckooBird 2023. 2. 15.

백준 실버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을 나누라고 하더라고요 촤ㅡ하ㅡㅋ(쿨한 사람의 웃음소리)

이런이런.. 인간적이야... 훗.

그냥 생각하기 귀찮지만 조금만 생각하면 풀 수 있었던 문제였던 것 같습니다 ㅇ<-<