→ Problems
[Algorithm] 백준 - 1019번 책 페이지 (Swift)
Swift librarian
2024. 7. 6. 21:23
문제 소개

문제 자체는 아주 간단하지만 N이 10억이하의 자연수라는 조건이 있기 때문에 1부터 숫자를 늘려가며 판별하면 무조건 시간 초과가 걸린다.
문제 풀이
let input = readLine()!
let a = Array(input.reversed()).map { Int(String($0))! }
let n = Int(input)!
var ans = Array(repeating: 0, count: 10)
for (i, e) in a.enumerated() {
let p = Int(pow(10.0, Double(i)))
for j in 0...9 {
ans[j] += n / (p * 10) * p
}
if e > 0 {
for j in 1..<e {
ans[j] += p
}
} else {
ans[0] -= p
}
ans[e] += n % p + 1
}
print(ans.map { String($0) }.joined(separator: " "))
