const s, e, k에queries의 각 쿼리의 범위를 정의한다.
idx가 k보다 크면 arr2에 array[idx]를 저장
answer에 오름차순으로 저장하고 리턴
function solution(arr, paramQue) {
const array = arr
const queries = paramQue
let answer = []
for(let idx = 0; idx < queries.length; idx++) {
let arr2 = []
const s = queries[idx][0]
const e = queries[idx][1]
const k = queries[idx][2]
for(let idx = s; idx <= e; idx++) {
if(idx > k) {
arr2.push(array[idx])
}
}
let minNum = arr2[0]
arr2.forEach((x) => {
if(minNum > x) {
minNum = x
}
})
if(!minNum) {
answer.push(-1)
} else {
answer.push(minNum)
}
}
return answer
}
문제점: 테스트는 통과 했으나 런타임에러가 남
queries의 길이 만큼 for문을 돌린다.
queries[idx]의 요소들을 s, e, k에 구조분해할당 한다.
slice로 s에서 e만큼의 요소를 arr에서 뺴서 subArr에 저장한다.
filter로 subArr안에 있는 요소 중 k보다 큰 요소들을 filterArr에 담는다
filterArr의 길이가 0이라면 answer에 -1를 push하고
filterArr길이가 1이상이면 Math.min으로 가장 작은 요소를 answer에 push한다.
function solution(arr, queries) {
const answer = []
for(let idx = 0; idx < queries.length; idx++) {
const [s, e, k] = queries[idx]
const subArr = arr.slice(s, e + 1)
const filterArr = subArr.filter((x) => x > k)
if(filterArr.length === 0) {
answer.push(-1)
} else {
const minNum = Math.min(...filterArr)
answer.push(minNum)
}
}
return answer
}