https://school.programmers.co.kr/learn/courses/30/lessons/12947?language=kotlin
문제
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해 주세요.
제한 조건
x는 1 이상, 10000 이하인 정수입니다.
풀이
class Solution {
fun solution(x: Int): Boolean {
return x % (x.toString().fold(0) { acc, char -> acc + (char - '0') }) == 0
}
}
- 결과적으로 이문제에서 인자 x의 자리값들 총합을 x로 나눴을때 나머지가 0이나 오는지 확인하는 문제입니다. 저는 이문제를 스코프함수인 fold를 이용하여 풀어보았습니다. fold를 이용하면 따로 sum이라는 변수를 설정하지 않고 값을 저장할 수 있다는 장점이 있어 현재 로직에 쓰이기 적절합니다. 문자 같은 경우 toInt를 사용하여 숫자로 바꿀 수 있지만 지금같이 문자가 '0'~'9' 인경우 0만 빼주면 더 쉽고 빠르게 정수를 얻을 수 있습니다. 위코드는 해당로직을 이용하여 만든 코드입니다.
결과
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 행렬의 덧셈 (Kotlin) (0) | 2023.08.04 |
---|---|
[프로그래머스] - 나누어 떨어지는 숫자 배열 (Kotlin) (0) | 2023.08.04 |
[프로그래머스] - x만큼 간격이 있는 n개의 숫자 (Kotlin) (0) | 2023.08.03 |
[프로그래머스] - 없는 숫자 더하기 (Kotlin) (0) | 2023.08.03 |
[프로그래머스] - 문자열 다루기 기본 (Kotlin) (0) | 2023.08.03 |