-
[백준] 1748 - 수 이어 쓰기1알고리즘 2023. 5. 12. 17:43728x90
1. 문제
https://www.acmicpc.net/problem/1748
1748번: 수 이어 쓰기 1
첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.
www.acmicpc.net
2. 접근
1. 이 문제의 결과값을 내는 방법은 많다.. 하지만 대부분 시간초과가 뜬다..
2. 결국 규칙을 찾아야 한다
- 1자리 : 9 * 1
- 2자리 : 90 * 2
- 3자리 : 900 * 3 ...
n = 120 이라면 1,2자리의 결과값들의 합에 (120 - 100 + 1) * 3 을 해주면 된다
3. 풀이
# 1748 실버 4 import sys input = sys.stdin.readline n = int(input()) length = len(str(n)) ans = 0 for i in range(length - 1): ans += 9 * (10 ** i) * (i+1) print(ans + (n-(10**(length-1)) + 1) * length)
실패한 방법 -> 시간초과
import sys input = sys.stdin.readline 1. 방법 n = int(input()) cnt = 0 for i in range(1,n+1): cnt += len(str(i)) print(cnt) 2. 방법 n = int(input()) num = '' for i in range(1,n+1): num += str(i) print(len(num)) 3. 방법 n = int(input()) heap = [] for i in range(1,n+1): for j in str(i): heapq.heappush(heap,j) print(len(heap))
'알고리즘' 카테고리의 다른 글
[백준] 14716 - 현수막 (0) 2023.05.13 [백준] 1969 - DNA (1) 2023.05.13 [백준] 13565 - 침투 (0) 2023.05.12 [백준] 1138 - 한 줄로 서기 (0) 2023.05.10 [백준] 1205 - 등수 구하기 (0) 2023.05.10