본문 바로가기

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

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

문제

 

내 정답 코드

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

'프로그래머스 (Swift) > 기초' 카테고리의 다른 글

[Day7-2] 배열 만들기 2  (0) 2024.02.17
[Day7-1] 수열과 구간 쿼리4  (0) 2024.02.15
[Day6-4] 수열과 구간 쿼리 3  (0) 2024.02.09
[Day6-3] 수 조작하기2  (0) 2024.02.09
[Day6-2] 수 조작하기1  (0) 2024.02.09