[백준 문제] 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





© 2018. by statssy

Powered by statssy