Kotlin 문법 및 연습 문제

(Kotlin) 하샤드 수 구하기

돗개진 2024. 3. 5. 17:31

프로그래머스 Kotlin 연습 문제 - 하샤드 수 구하기

 

[ 하샤드 수의 조건 ]

- 양의 정수 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은 크기가 유지된다.