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

    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

    댓글