본문 바로가기

백준문제풀이

[백준 문제풀이] 1748번 : 수 이어 쓰기1

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

 

1748번: 수 이어 쓰기 1

첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.

www.acmicpc.net

💡 보통 자연수의 길이 찾듯이 문제를 풀면 시간초과 문제가 발생한다. 그래서 새로운 아이디어가 필요했다.

1~9까지의 자리수의 합은 9×1, 10~99까지의 자리수의 합은 90×2, 100~999까지의 자리수의 합은 900×3이된다.

따라서 받은 자리수-1만큼은 다 더하고 나머지 자릿수를 더해주는 방식을 사용했다.

 

1. 소스코드

N=int(input())
sum=0

for i in range(len(str(N))-1):
    sum+= 9 * (10 ** i) * (i + 1)
    
print(sum+(N-10**(len(str(N))-1)+1)*len(str(N)))