🗒 문제
📝 나의 문제풀이
class Solution {
fun solution(arr: IntArray, delete_list: IntArray): IntArray {
return arr.filter{ !delete_list.contains(it) }.toIntArray()
}
}
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
class Solution {
fun solution(arr: IntArray, deleteList: IntArray) = arr.toList() - deleteList.toSet()
}
🖊 문제 풀이 시 알면 좋을 것
filter { 조건 }
배열에서 특정 조건을 만족하는 원소만 남김.
val arr = intArrayOf(1, 2, 3, 4, 5)
val filtered = arr.filter { it > 2 } // [3, 4, 5]
arr.filter { !delete_list.contains(it) }
delete_list에 없는 원소만 남겨서 삭제할 값을 필터링.
filterNot
filterNot은 filter의 반대(!조건) 역할을 하는 함수.
즉, 특정 조건을 만족하지 않는 원소만 남긴다.
val arr = listOf(1, 2, 3, 4, 5)
// 2보다 큰 숫자 제거
val filtered = arr.filterNot { it > 2 }
println(filtered) // [1, 2] (3, 4, 5 제거)
filterNot { it > 2 }
2보다 큰 값(3, 4, 5)을 제거하고 나머지를 유지.
contains()
배열(List, Set 등)에 특정 원소가 포함되어 있는지 확인.
val deleteList = intArrayOf(2, 4)
println(deleteList.contains(2)) // true
println(deleteList.contains(3)) // false
toSet()
리스트 또는 배열을 Set으로 변환.
val arr = intArrayOf(1, 2, 3, 2, 1)
val set = arr.toSet() // setOf(1, 2, 3) (중복 제거)
deleteList.toSet()을 사용하면 삭제할 목록을 Set으로 변환하여 contains() 연산 속도를 최적화할 수 있음.
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 꼬리 문자열 (0) | 2025.02.13 |
---|---|
[프로그래머스] 부분 문자열 (0) | 2025.02.10 |
[프로그래머스] 문자열로 변환 (0) | 2025.02.10 |
[프로그래머스] 두 수의 합 (0) | 2025.02.10 |
[프로그래머스] 0 떼기 (0) | 2025.02.09 |