TIL231130 D09 하샤드 수

jericho·2023년 11월 30일

TIL

목록 보기
9/62

오늘은 계산기 과제로 바쁜 관계로 알고리즘 1문제만 간단히 살펴보자.

하샤드 수

하샤드 수는 각 자릿수의 합으로 자신이 나누어 떨어지는 수다. 판별하여 불리언을 반환하는 문제다.

// 풀이
fun solution(x: Int): Boolean {
    val s = x.toString()
    var ds = 0
    for (c in s) ds += c - '0'
    if (x % ds == 0) return true
    return false }

수를 toString 하고 for문 돌려서 자릿수를 합해 나누어떨어지는지 판별했다.

로직은 개선할 부분이 딱히 없다. 하지만 여기에 sumOf를 끼얹는다면?

fun solution(x: Int): Boolean =
    x % x.toString().sumOf { it - '0' } == 0

이렇게 압축된다.
sumOf를 도입해 for문을 대신했고, 누적합을 위한 변수도 없앴다.
그리고 반환값이 불리언이므로 == 0에 대해 if문을 다시 수행할 필요 없이 불리언값 그대로 반환해주면 되므로 if를 생략해주었다.

0개의 댓글