(Swift) 백준 1748 수 이어 쓰기 1

SteadySlower·2022년 8월 14일
0

Coding Test

목록 보기
121/298

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와 동일한 자리수가 있는 수들 세기
    i *= 10
}

print(count)
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글