🌈 프로그래머스

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

Eun_zii 2024. 4. 17. 16:26

프로그래머스 Lv.0

- 수열과 구간 쿼리 2

 

💚 문제설명

 

💚 제한조건

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

💚 풀이

function solution(arr, queries) {
    let answer = [];
    for (let query of queries) {
        const [s,e,k] = query
        let min = -1
        for (let i = s; i <= e; i++) {
            if (arr[i] > k && (min === -1 || arr[i] < min)) {
                min = arr[i];
            }
        }
        answer.push(min);
    }
    return answer;
}

 

 

for...of문을 사용하여 'queries' 배열의 각 쿼리를 반복해주고, 각 쿼리에 대해 구조 분해 할당을 사용하여 s, e, k 값을 추출해준다.

min변수를 -1로 초기화한다. ( 현재 쿼리 범위 내에서 k보다 큰 값이 아직 발견되지 않았음을 나타내는것 )

내부 for( ) 문으로 s부터 e까지의 인덱스 범위를 반복해준다.  

 

arr 배열의 i에 있는 값이 k보다 큰지, 해당 값이 처음으로 나타나는지 아니면 현재 발견된 최소값보다 작은지 확인한다.

두 조건이 만족하면 min변수를 현재 값으로 업데이트하고, (반복 후에도 min이 -1로 남아 있으면 하위 배열에서 k보다 큰 요소가 발견되지 않은것 )

각 쿼리를 처리한 후 쿼리 범위(min) 내에서 찾은 최소값을 answer에 push해준후 return 한다.

728x90