본문 바로가기
카테고리 없음

[프로그래머스] 수열과 구간 쿼리 2 : JavaScript

by dygreen 2024. 12. 30.

📌 문제

 

📌 풀이

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

댓글