🌈 프로그래머스
[프로그래머스: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