Where who wants to meet someone
수열과 구간 쿼리 2 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181923
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] {
var result = [Int]()
for query in queries {
var minimumValue = arr.max()! * 2
for i in query[0]...query[1] {
if arr[i] > query[2] && arr[i] < minimumValue {
minimumValue = arr[i]
}
}
minimumValue != arr.max()! * 2 ? result.append(minimumValue) : result.append(-1)
}
return result
}
- query 내에서 minimumValue를 설정하고, s와 e 사이(query[0] ~ query[1])에서 arr[i]가 k(query[2])보다 크고 minimumValue보다 작다면 minimumValue를 arr[i]로 변경
- 한 query가 끝날 때마다 minimumValue가 초기값이 아니라면 해당 값을 result 배열에 추가하고, 초기값이라면 해당하는 것이 없었으므로 -1을 추가
import Foundation
func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] {
return queries.map {
let (s, e, k) = ($0[0], $0[1], $0[2])
return Array(arr[s...e]).filter { $0 > k }.min() ?? -1
}
}
- 다른 사람들은 map 메서드를 통해 클로저로 반환된 값들의 모음 배열을 반환하는 식을 사용
- 조건의 s, e, k를 설정하고, arr에서 s와 e 인덱스 안의 값 중에서 k보다 큰 값을 필터링하고 그 중 가장 작은 값 또는 -1을 반환
점수: +5
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
콜라츠 수열 만들기 (0) | 2024.01.16 |
---|---|
카운트 업 (0) | 2024.01.16 |
배열 만들기 2 (0) | 2024.01.16 |
수열과 구간 쿼리 4 (0) | 2024.01.15 |
수열과 구간 쿼리 3 (0) | 2024.01.11 |