(Swift) 백준 2231 분해합

SteadySlower·2022년 5월 27일
0

Coding Test

목록 보기
48/305

2231번: 분해합

// 분해합

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

let N = Int(readLine()!)!
var result = 0

for i in 1..<N {
    if decompositionSum(i) == N {
        result = i
        break
    }
}

print(result)
  1. N의 분해합을 보고 N을 구할 수 있는 방법은 없습니다.
    1. 따라서 가장 작은 생성자를 구하기 위해서는 직접 분해합을 구해보는 방법 밖에는 없습니다.
    2. 다행히도 N의 최대 백만이기 때문에 직접 반복을 해도 시간 초과의 부담은 없습니다.
  2. 분해합 함수를 만들어 줍니다.
  3. 그리고 1 ~ N 중에 반복문을 돌려 생성자를 찾아줍니다.
    1. result에는 0을 넣어두어 생성자가 없다면 0이 출력되도록 합니다.
    2. 그리고 가장 작은 생성자를 구해야 하므로 생성자를 구하면 더 이상 생성자를 구하지 않고 break 합니다.
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글