❓ 나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
💡 풀이
class Solution {
fun solution(arr: IntArray, divisor: Int): IntArray {
var newArr = arr.filter{it%divisor == 0}.sorted().toIntArray()
return if(newArr.size == 0) newArr.plus(-1) else newArr
}
}
- arr 안의 값들 중 divisor로 나누어지는 값들만 추출하는 메소드 filter로 새로운 배열로 반환한다.
- 이를 sorted 메소드를 재정렬한 뒤 return 값 타입에 맞추어 toIntArray화 시켜준다.
- return 할 때 newArr의 길이값이 0이면 newArr 값 안에 -1을 넣어 반환하고, 아니라면 newArr 자체를 반환한다.
- 배열 안에 값을 넣는 가장 간단한 방법은 plus() 메소드이다.
❓ 없는 숫자 더하기
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
💡 풀이
class Solution {
fun solution(numbers: IntArray): Int {
val intArrayLambda : IntArray = IntArray(10){ index -> index }
return intArrayLambda.filterNot({numbers.contains(it)}).sum()
}
}
- 0부터 9까지 담긴 숫자배열을 만들어준다.
- IntArray(10) {index -> index} 를 사용하면 0부터 9까지 총 10개의 숫자가 담긴 배열을 만들 수 있다.
- intArrayLambda 배열과 numbers 배열 안의 값들을 비교하여 일치하지 않는 값들만 반환하는 함수 filterNot을 사용한다.
- contains() 함수를 통해 numbers 배열 안에 it을 포함하고 있는지 알 수 있다.
- filterNot을 통해 반환된 새로운 배열을 sum()으로 모두 값을 더하면 된다.
❓ 제일 작은 수 제거하기
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
💡 풀이
class Solution {
fun solution(arr: IntArray): IntArray {
var sortedArr = arr.sorted()
var answer: IntArray = if(arr.size == 1) intArrayOf(-1) else arr.filterNot({
it == sortedArr.first()
}).toIntArray()
return answer
}
}
- arr를 오름차순으로 정리한 배열 sortedArr를 선언해준다.
- arr의 길이가 1이면 intArrayof(-1)로 -1이 담긴 배열을 만들어 준다.
- arr안의 값들을 filterNot으로 순회하여 sortedArr.first()의 값과 일치하는 것을 찾아낸 뒤 이를 제외한다.
- first()함수는 배열 안의 첫 번째 값을 가져온다.
1. filter
fun example(n: Int){
var arr: IntArray = intArrayOf(1, 2, 3, 4);
arr.filter({
it % 2 == 0
}) // 2, 4
}
- filter는 조건을 만족하는 값 (true) 만을 담은 List를 반환한다.
2. filterNot
fun example(n: Int){
var arr = arrayOf("Bora", "Kkevi", "Boradori", "BoraColor")
arr.filterNot({
it.startsWith("B")
}) // "Kkevi"
}
- filterNot은 조건을 만족하지 않는 값 (false) 만을 담은 List를 반환한다.
3. filterIndexed
fun example(n: Int){
var arr: IntArray = intArrayOf(1, 2, 3, 4);
arr.filterIndexed({ index, i ->
index == 3
}) // 4
}
- filterIndexed는 인자 뿐만 아니라 index값까지 받아 함께 처리할 수 있으며 해당 조건을 만족하는 값만을 담은 List를 반환한다.
❗출처
참고 사이트 : https://blog.yena.io/studynote/2020/01/22/Kotlin-Collection-Filter.html
'Kotlin' 카테고리의 다른 글
문제해결 : unresolved reference: add (0) | 2024.06.07 |
---|---|
Kotlin 문법 : sort와 sorted (with. 프로그래머스) (0) | 2024.06.05 |
Kotlin 문법 : Int와 Long의 차이 (with. 프로그래머스) (0) | 2024.05.13 |
Kotlin 문법 : Char와 String (with. 프로그래머스) (0) | 2024.05.09 |
Kotlin 문법 : split / toCharArray / toList (with. 프로그래머스) (0) | 2024.05.08 |