(Swift) 백준 4673 셀프 넘버

SteadySlower·2022년 5월 10일
0

Coding Test

목록 보기
20/298

4673번: 셀프 넘버

풀이

func d(_ n: Int) -> Int {
    let digits = String(n).map { Int(String($0))! }
    return n + digits.reduce(0, +)
}

var check = Array(repeating: false, count: 10001)

for n in 1..<10001 {
    let d = d(n)
    if d < 10001 {
        check[d] = true
    }
}

for i in (1..<check.count) {
    if !check[i] { print(i) }
}
  • ❗️ 처음에는 d(n) > 10001이면 반복문을 멈추도록 했는데
    • n이 증가하면 무조건 d(n)은 증가하는 것이 아니었다. → d(8999) > d(9000)
    • 따라서 d가 index 범위에 들어가는지 확인하면서 n 자체는 10001까지 확인한다.
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글