import sys
n = str(sys.stdin.readline().rstrip())
new = len(n)
n = int(n)
answer = 0
if n < 10:
answer = n
if n > 10:
for i in range(1, new):
answer += (10**i - 10**(i-1)) * i
answer += new * (n-10**(new-1)+1)
print(answer)
휴 ... 실버 4로 이렇게 와리가리 치다니 ...
예전에는 실버 1도 슉슉 풀어냈던 것 같은데 다시 차근 차근 쌓아가야겠다.
High-level idea
는 다음과 같다.
자리수 구함
마지막 자리수 전까지 포함되는 모든 수들에 자리수를 곱하여 그 갯수를 더해줌
마지막 자리수는 해당 자리수의 끝까지 포함되지 않을 것이므로, 마지막 자리수는 주어진 만큼만 포함되는 숫자들을 구해 자리수를 곱해주고 더해줌
끄읕
n = input()
result = 0
for i in range(1,len(n)):
result+=9*10**(i-1)*i
result +=(int(n)-10**(len(n)-1)+1)*len(n)
print(result)
출처: https://hae-sooo97.tistory.com/61
내 코드도 충분히 줄일 수 있는데, 줄이면 유사한 흐름으로 흘러갈 것 같다.
점수에 연연하지 말고 하나하나 차근차근 다시 내 코딩 머리 찾아가기!