프로그래머스 (Swift)/기초

[Day6-5] 수열과 구간 쿼리2

은더기 2024. 2. 10. 21:23

문제

 

내 정답 코드

import Foundation

func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] {
    
    var result:[Int] = []
    
    for queries in queries {
        let s = queries[0]
        let e = queries[1]
        let k = queries[2]
        
        let arr = arr[s...e].filter{ $0 > k }
        
        if arr.count == 0 {
            result.append(-1)
        } else {
            result.append(arr.min()!)
        }
    }
    
    return result
}

 

#

1. filter를 통해 k보다 큰 수를 걸러내고

2. min함수를 통해 최소 값을 가져와 배열에 추가한다.

3. filter로 거른 배열의 count가 0일 경우 -1을 추가한다.

 

위 코드를 좀 더 간단하게 짜보았다.

import Foundation

func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] {
    
    var result:[Int] = []
    
    for queries in queries {
        let (s, e, k) = (queries[0], queries[1], queries[2])
        
        let min = arr[s...e].filter{ $0 > k }.min()
        
        result.append(min ?? -1)
    }
    return result
}

배운 기술

 

1. min()

https://developer.apple.com/documentation/swift/set/min()

 

min() | Apple Developer Documentation

Returns the minimum element in the sequence.

developer.apple.com

 

2. max()

https://developer.apple.com/documentation/swift/set/max()

 

max() | Apple Developer Documentation

Returns the maximum element in the sequence.

developer.apple.com