πŸ“– Algorithm/πŸ“ λ°±μ€€

Kotlin 🍬 λ°±μ€€ 12단계 :: 2231 번

λ²ŒκΏ€μ˜€μ†Œλ¦¬πŸ¦‘ 2023. 6. 9. 21:15
λ°˜μ‘ν˜•

λΆ„ν•΄ν•©

문제   |

  μ–΄λ–€ μžμ—°μˆ˜ N이 μžˆμ„ λ•Œ, κ·Έ μžμ—°μˆ˜ N의 뢄해합은 Nκ³Ό N을 μ΄λ£¨λŠ” 각 자리수의 합을 μ˜λ―Έν•œλ‹€. μ–΄λ–€ μžμ—°μˆ˜ M의 뢄해합이 N인 경우, M을 N의 μƒμ„±μžλΌ ν•œλ‹€. 예λ₯Ό λ“€μ–΄, 245의 뢄해합은 256(=245+2+4+5)이 λœλ‹€. λ”°λΌμ„œ 245λŠ” 256의 μƒμ„±μžκ°€ λœλ‹€. λ¬Όλ‘ , μ–΄λ–€ μžμ—°μˆ˜μ˜ κ²½μš°μ—λŠ” μƒμ„±μžκ°€ 없을 μˆ˜λ„ μžˆλ‹€. λ°˜λŒ€λ‘œ, μƒμ„±μžκ°€ μ—¬λŸ¬ 개인 μžμ—°μˆ˜λ„ μžˆμ„ 수 μžˆλ‹€.

  μžμ—°μˆ˜ N이 μ£Όμ–΄μ‘Œμ„ λ•Œ, N의 κ°€μž₯ μž‘μ€ μƒμ„±μžλ₯Ό κ΅¬ν•΄λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯   |

  μ²«μ§Έ 쀄에 μžμ—°μˆ˜ N(1 ≤ N ≤ 1,000,000)이 주어진닀.

 

좜λ ₯   |

  μ²«μ§Έ 쀄에 닡을 좜λ ₯ν•œλ‹€. μƒμ„±μžκ°€ μ—†λŠ” κ²½μš°μ—λŠ” 0을 좜λ ₯ν•œλ‹€.

 

 

풀이  |

  뢄해합은 좜λ ₯될 숫자(μƒμ„±μž) + ν•΄λ‹Ή 수의 각 자릿수의 합이닀. μ΄λ•Œ, κ°€μž₯ μž‘μ€ μƒμ„±μžμ˜ κ²½μš°λŠ” 각 자릿수의 합이 μ΅œλŒ€κ°€ λ˜λŠ” κ²½μš°μ΄λ‹€. 각 자릿수의 합이 μ΅œλŒ€κ°€ λ˜λŠ” κ²½μš°λŠ” λͺ¨λ“  자릿수의 값이 9μΌλ•Œ μ΄λ―€λ‘œ for문을 μ΄μš©ν•΄ 9 * μž…λ ₯받은 수의 μžλ¦Ώμˆ˜λΆ€ν„° μž…λ ₯받은 μˆ˜κΉŒμ§€ 뢄해합을 계산해 λΉ„κ΅ν•œλ‹€.

 

 

λ‹΅μ•ˆ  |

fun main() {
    val N = readLine()!!.toInt()
    val nLength = N.toString().length
    
    for (i in N - 9 * nLength until N) {
        if (splitSum(i.toString()) + i == N) {
            print(i)
            return
        }
    }
    print(0)
}

fun splitSum(num: String): Int {
    var sum = 0
    for (i in num) {
        sum += Character.getNumericValue(i)
    }
    return sum
}
λ°˜μ‘ν˜•