[TIL] #12 Programmers - Choosing Multiples of 'n'

Yeon·2023년 7월 31일
0

내일배움캠프 - Kotlin

목록 보기
16/58
post-thumbnail

프로그래머스 - n의 배수 고르기

❓ Question

[문제 설명]
정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

[제한사항]

  • 1 ≤ n ≤ 10,000
  • 1 ≤ numlist의 크기 ≤ 100
  • 1 ≤ numlist의 원소 ≤ 100,000

💡 Code

1. mutableListOf, add

class Solution {
    fun solution(n: Int, numlist: IntArray): IntArray {
        var list = mutableListOf<Int>()

        for(num in numlist) {
            if(num % n == 0) {
                list.add(num)
            }
        }
        return list.toIntArray()
    }
}
  • for문으로 numlist의 요소를 num으로 하나씩 불러옴
  • numn으로 나누었을때 나머지가 0이라면 list라는 mutable리스트에 추가
  • 반복문이 끝난 후 toIntArray를 사용하여 정수 배열로 변환하여 반환

2. filter

class Solution {
    fun solution(n: Int, numlist: IntArray): IntArray {
        return numlist.filter{it % n ==0}.toIntArray()
    }
}

풀어서 적어보자면 아래와 같다.

class Solution {
    fun solution(n: Int, numlist: IntArray): IntArray {
        val filteredList = numlist.filter {it % n == 0}
        return filteredList.toIntArray()
    }
}
  • numList의 요소들을 n으로 나누었을때, 나머지가 0인 것만 걸러 filteredList라는 리스트에 저장
  • filteredList를 정수 배열로 변환하여 반환

➕ filter

  • Kotlin에서 제공하는 고차 함수 중 하나
  • 주어진 Collection(List, Array, ...)에서 특정 조건을 만족하는 요소들로 새로운 Collection을 만드는 기능

ex1. 정수 리스트에서 짝수만 걸러내기

val nums = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
val evenNums = nums.filter {it % 2 == 0}
  
println(evenNums)
  
  
// [output]
// [2, 4, 6, 8, 10]

ex2. 문자열 리스트에서 알파벳 걸러내기

val strList = listOf("Kotlin", "코틀린", "Android", "Ars", "2")
val alphabetStr = strList.filter {it.matches(Regex("[a-zA-Z]+"))}

println(alphabetStr)


// [output]
// [Kotlin, Android, Ars]



[참고 사이트]

'[Kotlin] 코틀린 Collection 에서 사용하는 Filter 함수', yena

0개의 댓글