2231 분해합

Choong Won, Seo·2021년 12월 29일
0

백준

목록 보기
9/28
post-thumbnail

Today 12/29

분해합 (My Code)

let scan = readLine()!
let input = Int(scan)!
let inputDigit = scan.map{String($0)}.count
var output = input-(9*inputDigit) > 0 ? input-(9*inputDigit) : 1

while output < input {
    let outputDigitNum = String(output).map{Int(String($0))!}.reduce(0,+)
    if output + outputDigitNum == input {
        break
    }
    output += 1
}
print(output < input ? output : "0")

구현보다도 최솟값 설정과 예외처리가 더 어려웠다.

아무리 작아져도 자릿수 9를 뺀 수보다는 커야되겠다고 생각하고 `input-(9inputDigit)`를 최솟값으로 설정했다. 또한 여기서 자릿수 * 9를 뺀 수가 음수가 되는 것을 방지하기 위해 삼항연산자를 사용했다.

let scan = readLine()!
let input = Int(scan)!
let inputDigit = String(input).count
var output = input-(9*inputDigit) > 0 ? input-(9*inputDigit) : 1

while output < input {
    var instance = output
    var outputDigitNum = 0
    while instance != 0 {
        outputDigitNum += instance % 10
        instance /= 10
    }
    if output + outputDigitNum == input {
        break
    }
    output += 1
}
print(output < input ? output : "0")

시간을 줄이려고 inputDigit = String(input).count로 바꾸고 reduce 말고 10을 계속 나누어주는 방법을 사용했는데 비슷했다. 그냥 import Foundation 뺐더니 4ms 줄어들었다..

profile
UXUI Design Based IOS Developer

0개의 댓글