프로그래머스 (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