[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)