[알고리즘/백준] 1748: 수 이어 쓰기 1(python)

유현민·2022년 4월 25일
0

알고리즘

목록 보기
135/253

규칙을 찾아서 풀어야한다.

1~9 -> 9
10~99 -> 90 2
100~999 -> 900
3

자세히보면 9 (10^자릿수) (자릿수)

from sys import stdin

N = int(stdin.readline())
l = len(str(N))
ans = 0

N의 길이를 저장한다.

for i in range(l - 1):
    ans += 9 * 10 ** i * (i+1)

l은 N의 길이이다. l에서 1을 빼주어야한다.
왜냐하면 만약 N이 5이면 l은 1이 들어온다.
1은 10의 자리를 의미하기 때문에
1의 자리를 구하기 위해서는 l에서 1을 빼준다.

print(ans + (N - 10 ** (l-1) + 1) * l)

마지막에 더해주는 이유는 위에서 자릿수를 다 돌고나면 최대 자릿수 -1만큼만 더해지게 된다.
이렇게 해주는 이유는 100의 자리의 마지막이 999가 아닌데 900*3을 해주면 100~999까지의 자릿수가 모두 더해지게 된다.

from sys import stdin

N = int(stdin.readline())
l = len(str(N))
ans = 0

for i in range(l - 1):
    ans += 9 * 10 ** i * (i+1)
print(ans + (N - 10 ** (l-1) + 1) * l)
profile
smilegate megaport infra

0개의 댓글