현제의 현재이야기

[백준/python] 1748 - 수 이어 쓰기 1 본문

algorithm

[백준/python] 1748 - 수 이어 쓰기 1

현재의 현제 2022. 6. 25. 15:16

첫번재 try

n = int(input())
a = [
    str(i + 1)
    for i in range(n)
]
b = "".join(a)

print(len(b))

두번째 try

n = input()

leng = len(n)
leng_minus = leng - 1
output = 0

for i in range(leng - 1):
    output += 9 * (10 ** i) * (i + 1)

output += (int(n) - (10 ** leng_minus) + 1) * leng

print(output)

알고리즘:

  1. 우선 자연수 n을 문자로 받고 len 함수로 자리 수를 얻는다.
  2. 자연수 n의 자리 수보다 낮은 자리 수들의 길이를 모두 합한다.
  3. 전 자리 길이들 다 더한거에 해당 자리 수의 나머지 부분에 길이를 곱한다

예를 들어 120을 얻는다 하면

leng = 3이고

1의 자리 9 * (10 ** 0) * (0 + 1) ← 해당 자리수의 길이 해서 9

10의 자리 9 * (10 ** 1) * (1 + 1) 해서 180

여기서 output은 일단 두 개를 더한 189이고 여기에

나머지 (120 - (10 ** 2) + 1)← 나머지 부분 * 3← 길이 을 하면

252가 나온다.

Comments