문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.

query마다 순서대로 sie인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.

각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.

제한사항

  • 1 ≤ arr의 길이 ≤ 1,000
    • 0 ≤ arr의 원소 ≤ 1,000,000
  • 1 ≤ queries의 길이 ≤ 1,000
    • 0 ≤ se < arr의 길이
    • 0 ≤ k ≤ 1,000,000

입출력 예

arrqueriesresult
[0, 1, 2, 3, 4][[0, 4, 2],[0, 3, 2],[0, 2, 2]][3, 4, -1]

풀이

function solution(arr, queries) {
    const answer = new Array();
    
    queries.forEach((el) => {
        const [s, e, k] = el;
        const filterArr = arr.filter((el, index) => 
            s <= index && index <= e && k < el);
        
        answer.push(filterArr.length ? Math.min(...filterArr) : -1);
    });
    
    return answer;
}

풀이 설명

  • el 요소가 k보다 크면서 인덱스가 s 이상이고 e 이하인 경우만 필터한다.
  • filterArr 배열의 길이를 답이 존재하는지 판단하고, 필터링된 요소가 있으면 가장 작은 값을 Math.min(...filterArr)을 사용하여 찾고, 그 값을 answer 배열에 추가한다. 필터링된 요소가 없으면, -1을 answer 배열에 추가합니다.
profile
개인 이력, 포폴 관리 및 기술 블로그 사이트 👉 https://aimzero-web.vercel.app/

0개의 댓글