[ 하샤드 수의 조건 ]
- 양의 정수 x의 자릿수의 합이 정수 x로 나누어 떨어져야 함.
ex) x = 18 -> 1 + 8 = 9 -> 18 / 9 = 2 로 나누어 떨어짐. 따라서 x는 하샤드 수이다.
class Solution {
fun solution(x: Int): Boolean {
var answer = true
var xStr = x.toString()
var Sum = xStr.map { it.toString().toInt() }.sum()
// map 함수를 사용해 x를 문자열로 변환하여 각 자릿수를 떼서 리스트에 담고 다시 정수로
// 변환하고 sum() 을 통해 정수 리스트의 합계를 계산 (정수 리스트면 반환형도 정수)
return x % Sum == 0
}
}
[ Kotlin 메소드 간단 정리 ]
- map 함수
: map 함수는 각 원소를 원하는 형태로 변환하는 기능을 하며 반환형은 리스트이다. 조건을 주어 연산을 수행할 수도 있다.
var Sum = xStr.map { it.toString().toInt() }.sum()
ㄴ> 위 문제를 풀 때 사용된 map 함수이다. xStr을 문자열로 변환하여 각 원소를 it으로 받아 다시 정수형으로 변환해서 리스트형으로 반환하며 sum() 함수를 통해 원소들의 합을 정수형으로 반환한다. (정수형 리스트의 합이기 때문)
- filter 함수
: 조건에 맞는 원소만 필터링하는 기능, 주어진 조건문에 만족하는 원소만으로 이루어진 새로운 컬렉션을 결과로 도출한다.
val list = listOf(1, 2, 3, 4)
println(list.filter {it % 2 == 0}
ㄴ> 이 코드의 결과는 2, 4가 출력된다. filter 함수의 조건으로 짝수인 원소만 필터링하도록 했기 때문이다.
- map / filter 차이점
: filter 함수는 조건에 만족하는 원소를 탐색하는 함수라면 map 함수는 조건에 따라 일정한 연산을 할 수 있고 filter는 조건에 만족하는 원소를 걸러내기 때문에 크기가 달라질 수 있지만 map은 크기가 유지된다.
'Kotlin 문법 및 연습 문제' 카테고리의 다른 글
(Kotlin) 나누어 떨어지는 숫자 (0) | 2024.03.07 |
---|---|
(Kotlin) 정수 제곱근 판별 (0) | 2024.03.05 |
(Kotlin) 프로그래머스 문제 설명의 제한 조건 의미 (0) | 2024.03.05 |
(Kotlin) 자연수를 뒤집어 배열로 만들기 (0) | 2024.03.04 |
(Kotlin) - 배열의 평균값 (0) | 2024.02.29 |