🔴 문제
🔵 풀이 1 - for...in, append, sorted
for...in 구문에서 element를 divisor로 나눠보고, 나누어 떨어지는 element가 있다면 새로운 배열에 append하는 방식으로 풀면 될 것 같다.
func solution(_ arr:[Int], _ divisor:Int) -> [Int] {
var newArr: [Int] = []
for i in arr {
if i % divisor == 0 {
newArr.append(i)
}
}
if newArr == [] { return [-1] }
return newArr.sorted() // 오름차순으로 정렬하여 반환
}
🔵 풀이 2 - filter, sorted
특정 조건을 만족하는 element를 필터링하여 배열을 반환하는 것이므로, 고차함수 filter를 사용할 수 있다.
func solution(_ arr:[Int], _ divisor:Int) -> [Int] {
let result = arr.filter{ $0 % divisor == 0}.sorted()
return result.isEmpty ? [-1] : result
}
<관련 문서>
- filter 개념 정리 : [Swift] 고차함수 - map, filter, reduce
- filter 사용 예제 : [Swift|코드카타] (프로그래머스) 입문 #14. 약수의 합 (filter, reduce, squareRoot)
'Swift > Code Kata (알고리즘)' 카테고리의 다른 글
[Swift|코드카타] (프로그래머스) 입문 #27. 핸드폰 번호 가리기 - enumerated(), suffix(_:), map (0) | 2024.02.21 |
---|---|
[Swift|코드카타] (프로그래머스) 입문 #26. 음양 더하기 -시퀀스 쌍 만드는 zip(_:_:) (0) | 2024.02.19 |
[Swift|코드카타] (프로그래머스) 입문 #24. 서울에서 김서방 찾기 - firstIndex(of:), enumerated() (2) | 2024.02.18 |
[Swift|코드카타] (프로그래머스) 입문 #23. 콜라츠 추측 - 함수 2개 쓰기 (1) | 2024.02.18 |
[Swift|코드카타] (프로그래머스) 입문 #22. 두 정수 사이의 합 - Array(), 등차수열의 합 (0) | 2024.02.16 |