Javascript/자바스크립트 문제
[Javascript : programmers] 수열과 구간 쿼리 2 (Lv.0)
isfp_yykkng
2024. 8. 26. 13:07
[Javascript : programmers] 수열과 구간 쿼리 2 (Lv.0)
문제
나의 정답 풀이
function solution(arr, queries) {
let res = [];
for(let [s,e,k] of queries) {
let arr2 = arr.slice(s,e+1).filter(e=>e>k);
res.push( arr2.length ? Math.min(...arr2) : -1);
}
return res;
}
queries 배열을 for 문으로 돌면서 arr 배열을 슬라이싱하여 새로운 배열에 저장하는 것이 핵심이다.
새로운 배열은 s,e까지 슬라이싱한 후 k 보다 큰 값을 filter 함수로 걸러낸 배열이다.
새로운 배열의 길이가 있다면 그 중 가장 최소값을, 없다면 -1을 res 에 넣고 반환한다.
다른 사람 풀이
const solution = (arr, queries) =>queries.map(([s, e, k]) => arr.slice(s, e + 1).filter((n) => n > k).sort((a, b) => a - b)[0] || -1);
result를 보면 총 3개의 값이고 이는 queries의 3개의 배열과 같아 이를 map으로 도는 것이 핵심이다.
queries를 map으로 돌면서 s부터 e까지 slice하고 k보다 큰 값을 filter로 걸러낸 함수를 오름차순으로 정렬한다.
이렇게 정렬된 배열의 첫번째 값이나 없다면 || -1 을 통해서 -1을 반환한다.
<참고>
수열과 구간 쿼리 1
2024.08.26 - [Javascript/자바스크립트 문제] - [Javascript : programmers] 수열과 구간 쿼리 1 (Lv.0)
[Javascript : programmers] 수열과 구간 쿼리 1 (Lv.0)
[Javascript : programmers] 수열과 구간 쿼리 1 (Lv.0) 문제 나의 정답 풀이function solution(arr, queries) { for(let q of queries){ arr = arr.map((v,i)=> (i>=q[0]) && (i 구조 분해를 통해서 이차원 배열인 quries에 들어
yy-kkang.tistory.com