Today 12/29
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 줄어들었다..