💻 프로그래머스: 나누어 떨어지는 숫자 배열 - 문제 링크
func solution(_ arr:[Int], _ divisor:Int) -> [Int] {
var newarr: [Int] = []
for i in arr {
if i % divisor == 0 {
newarr.append(i)
}
}
return newarr.count == 0 ? [-1] : newarr.sorted(by:<)
}
답이 맞긴 하지만, 다른 사람의 풀이를 보니 filter 메서드를 사용하여 해결했기에 이번엔 filter에 대해 공부해보려고 한다.
filter는 Swift의 컬렉션(배열, 집합, 딕셔너리)에서 특정 조건을 만족하는 요소만 선택하여 새로운 컬렉션을 생성하는 함수이다.
매개변수를 클로저로 받아 새 배열 포함 여부를 검사하고, 이 클로저는 true와 false를 반환한다.
func solution(_ arr:[Int], _ divisor:Int) -> [Int] {
var newarr = arr.filter {$0 % divisor == 0}
return newarr.count == 0 ? [-1] : newarr.sorted(by:<)
}
위 풀이에서 for in 문으로 검사하는 부분을 filter로 바꾼 코드이다.