Programmers
[프로그래머스][JS] 수열과 구간 쿼리 2
winter17
2023. 6. 26. 16:02
https://school.programmers.co.kr/learn/courses/30/lessons/181923
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(arr, queries) {
var answer = [];
for (let j = 0; j < queries.length; j++){
const [s, e, k] = queries[j]
let array = []
for (let i = s; i <= e; i++){
if (arr[i] > k){
array.push(arr[i])
}
}
if (array.length){
answer.push(Math.min(...array))
}else{
answer.push(-1)
}
}
return answer;
}
이전의 수열과 쿼리 문제 흐름과 비슷하게 풀면 되는데
문제에서 'i의 범위는 s이상 e이하'라고 했기 때문에 반복문 범위를 잡아주고
'모든 i에 대해 k보다 크면서 가장 작은 arr [i]를 찾는다'라고 했기 때문에 조건문을 arr [i] > k라고 한 후 array 빈 배열에 arr [i] 값을 push 한다. → k보다 큰 arr[i]값 중에서 가장 작은 값을 찾는 것
그다음 array배열 만드는 반복문 밖에서 array배열에 요소가 존재한다면 array배열에서 최솟값을 찾아서 answer배열에 push
array 배열에 요소가 없다면 -1을 push 한 후 마지막에 answer를 반환한다.
리뷰
중간에 '모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾는다'라는 말을 'i는 k보다 크다'라고 이해를 해서 조건문을 하나 잘못작성했는데
'arr[i]는 k보다 큰 값들 중에서 가장 작은 값을 찾는다'라고 봐야한다.
그 부분만 수정하니까 통과했다