[Silver IV] 수 이어 쓰기 1 - 1748

문제 링크

성능 요약

메모리: 108384 KB, 시간: 100 ms

분류

수학, 구현

제출 일자

2026년 04월 25일 22:04:59

문제 설명

1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.

1234567891011121314151617181920212223...

이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 새로운 수의 자릿수를 출력한다.


💡 해결 방법

💻 코드

# 문제
# 1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
 
# 1234567891011121314151617181920212223...
# 이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
 
# 입력
# 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
 
# 출력
# 첫째 줄에 새로운 수의 자릿수를 출력한다.
 
# 예제 입력 1 
# 5
# 예제 출력 1 
# 5
# 예제 입력 2 
# 15
# 예제 출력 2 
# 21
# 예제 입력 3 
# 120
# 예제 출력 3 
# 252
 
import math
 
 
n = int(input())
#15 > 9 개의 1의 자리 +  15- 9 = 6 개의 10의자리,,,
#120 > 9 * 1 + 90 * 2 + 21 * 3 = 252
#9(10 - 1) , 90(100 - 10) , 900(1000 - 100),,,
 
 
ans = 0
for degree in range(1, 9 + 1):
    now = 0
    if n >= 9 * (10 ** (degree - 1)):
        now = 9 * (10 ** (degree - 1))
        n -= now
        ans += now * degree
    else:
        ans += n *  degree
        break
 
print(ans)