본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1748 수 이어 쓰기 1

by Alan_Kim 2023. 1. 3.
728x90
반응형

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

 

1748번: 수 이어 쓰기 1

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

www.acmicpc.net

 

문제 해결

입력 값 n이 몇자리 수인지 구한다.

n이 x 자리 수이면 x-1 자리 수까지 임의의 i자리 수는 각각 9$\times 10^{i-1}$ 개가 있다.

예로들면 400인 3자리수를 보면 한자리 수는 1~9  9개가 있고 두자리수는 10~99 90개가 있다.

따라서 i자리 수 모두를 이어 붙이면 i $\times 9 \times 10^{i-1}$ 자리가 된다.

나머지 x자리 수 개수 (n- ($10^{x-1}$-1)) $\times$ x 를 붙이면 n까지 수를 이어스 쓴 자릿수가 된다.

 

CODE

import sys
input = sys.stdin.readline

n = int(input())
x = len(str(n))
ans = 0
a = 0
while x>a+1:
    ans += 9*pow(10,a)*(a+1)
    a += 1
ans += (n- pow(10,x-1)+1)*x
print(ans)
728x90
반응형

댓글