[백준 구현] 수 이어 쓰기 1(python)

이진규·2022년 2월 9일
1

백준(PYTHON)

목록 보기
31/115

문제

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

나의 코드

"""
1. 아이디어


2. 시간복잡도

"""

from sys import stdin
input = stdin.readline

n = int(input())

length = len(str(n))
ans = 0

""" 밑의 반복문과 그 이후에 구하고자 하는 식은 다음과 같다.
n이 120일 때
1의 자리(1~9)는 자릿수가 1개, 2의 자리(10~99)는 자릿수가 2개,
3의 자리(100~999)는 자릿수가 3개 이므로

1 * (10 - 1) + 2 * (100 - 10) + 3 * (120 - 100 + 1) 과 같이 구할 수 있다.
"""

for i in range(1, length):
    ans += i * (pow(10, i) - pow(10, i-1)) # 이때 i는 자릿수를 의미.

ans += length * (n - pow(10, length-1) + 1)

print(ans)

    

느낀점

구현 문제가 은근 까다로움.. 수학문제가 들어가면 더더욱.

profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글