[백준 문제] 1748번 수 이어 쓰기 1 (파이썬)
[백준 문제] 1748번 수 이어 쓰기 1 (파이썬)
백준 : 수 이어 쓰기 1 문제를 파이썬으로 풀어보도록 하자.
1) 전체를 더하는 식으로 풀기(실패)
- 무식하게 더하는 식으로 했더니 시간초과가 나옴
n = input()
sum_len = 0
for i in range(1, int(n)+1) :
sum_len += int(len(str(i)))
print(sum_len)
120
252
2) 미리 리스트에 계산식을 넣고 풀기(정답)
## 자리수별 전체 합계를 미리 리스트화
MAX = '100000000' # 9자리
sum_lst = [0]
len_all = 0
for i in range(1, len(MAX)+1) :
len_all += 9*i*10**(i-1)
sum_lst.append(len_all)
## 원래수 - 그자리수 최소값 + 1 로 계산
n = input()
diff = int(n) - 10**(len(n)-1) + 1
diff_len = diff*len(n)
aws = diff_len + sum_lst[len(n)-1]
print(aws)
120
252