Algorithm/Javascript

[프로그래머스] 230708 코딩테스트 연습

보라해바라기 2023. 7. 8. 20:59
SMALL

1. 수열과 구간 쿼리 2

function solution(arr, queries) {
    
    var answer = [];
    var arr_range = []; // 범위에 해당하는 배열
    var res = []; // k보다 큰 값의 배열
    var temp = 0; // k보다 크면서 가장 작은 값
    
    queries.forEach( ([s, e, k]) => {
        
        // 범위에 해당하는 배열 자르기
        arr_range = arr.slice(s, e+1); 
        
        // k보다 큰 값 찾아 res 배열에 넣기
        arr_range.forEach ( i => { 
            if (i>k) {
                res.push(i);
            }
        })
      
        // res 배열 원소 개수에 따른 최소값 저장
        if (res.length>=2) {
            temp = res[0]; // ** 처음 값을 최소값으로 가정
            for(var j = 0; j<res.length; j++) {
                if (res[j] < temp) {
                    temp = res[j];
                } 
            }
        }
        
        else if (res.length == 1) {
            temp = parseInt(res);
        } 
        
        else  { // (res.length == 0)
            temp = -1 ;
        }
            
            answer.push(temp);
            res = []; // ** res 배열 초기화! > 다음 queries에서 res 새로 지정됨.
        });
    

    return answer;
}

 

728x90