1748번: 수 이어 쓰기 1
문제 풀이 아이디어
한 자리 수 (1 ~ 9): 9개
두 자리 수 (10 ~ 99): 90개
세 자리 수 (100 ~ 999): 900개
...
n 자리 수 (10^(n - 1) ~ (10^n - 1)): 9 * 10^(n - 1)개
위 공식을 역으로 생각해보면
1 ~ n까지의 숫자 중에
1의 자리가 있는 수의 갯수 = n개 (모든 자연수는 1의 자리 있음)
10의 자리가 있는 수의 갯수 = n - 9 (한 자리 수 빼고)
100의 자리가 있는 수의 갯수 = n - (90 + 9) (한 자리, 두 자리 수 빼고)
1000의 자리가 있는 수의 갯수 = n - (900 + 90 + 9) = n - (1000 - 1)
...
10^(n - 1)의 자리가 있는 수의 갯수 = n - (10^(n - 1) - 1)
코드
let N = Int(readLine()!)!
var count = 0
var i = 1
while i <= N {
count += n - (i - 1)
i *= 10
}
print(count)