📌 문제
📌 풀이
function solution(arr, queries) {
const result = queries.map(([s,e,k]) => {
const list = arr.slice(s, e + 1).filter(num => num > k);
return list.length > 0 ? Math.min(...list) : -1;
})
return result;
}
[s,e,k]
: 배열 구조 분해 할당을 통해 각 쿼리를 분리한다slice()
: s부터 e까지 범위의 값을 분리한다. slice의 끝 인덱스는 포함되지 않으므로 e + 1을 사용- slice() : 새로운 배열을 반환한다 (원본 배열이 그대로 유지)
- splice() : 원본 배열이 수정된다
filter()
: k보다 큰 값들을 필터링Math.min(...array)
: 배열의 가장 작은 수를 반환해준다 (Spread Operator 사용해야 함)
sort() 를 사용한 방법
function solution(arr, queries) {
return queries.map(([s, e, k]) => arr.slice(s, e + 1).filter((n) => n > k).sort((a, b) => a - b)[0] || -1);
}
sort()
: a - b 로 오름차순으로 정렬한 후, 가장 첫 번째 값(= 가장 작은 값)을 꺼낸다
만약 가장 작은 값이 없다면 -1 을 반환한다
728x90
댓글