[백준] 1748번 수 이어 쓰기 1

거북이·2023년 1월 12일
0

백준[실버4]

목록 보기
27/91
post-thumbnail

💡문제접근

  • 반복문으로 하나하나 처리해주면 시간초과가 발생할 것 같아서 다른 방법을 오랫동안 고민하고 종이에 써가면서 코드를 작성했다.

해결 방법
1 ~ 9까지의 수를 이용하여 만들어지는 수의 길이 : (9 - 1 + 1) 1 = 9
10 ~ 99까지의 수를 이용하여 만들어지는 수의 길이 : (99 - 10 + 1)
2 = 180
100 ~ 999까지의 수를 이용하여 만들어지는 수의 길이 : (999 - 100 + 1) * 3 = 2700

  • 위의 해결 방법을 이용하여 코드를 작성하여 해결할 수 있었다.

💡코드(메모리 : 30616KB, 시간 : 32ms)

N = int(input())
cnt = len(str(N)) - 1

total = 0
for i in range(cnt):
    total += 9 * (10 ** i) * (i+1)

total += (N - (10 ** cnt) + 1) * (cnt + 1)
print(total)

💡소요시간 : 24m

0개의 댓글