본문 바로가기
코딩테스트

[프로그래머스] 배열의 원소 삭제하기

by liz_devel 2025. 2. 10.

🗒 문제

 


📝 나의 문제풀이

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() 연산 속도를 최적화할 수 있음.

 

 

 

반응형