수열과 구간 쿼리2

gotcha!!·2023년 7월 27일
0

코딩테스트

목록 보기
14/36

문제

문제가 꽤나 어려웠다..
2차원 배열이 익숙하지가 않아서
너무 애 먹었다.
이것저것 찾아보고
사실 지금도 좀 헷갈린다..

내코드

import java.util.*;
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int [queries.length];
        Arrays.fill(answer, Integer.MAX_VALUE); 
        // answer배열에 정수 최대 값 넣어주기
        for(int i = 0; i < queries.length; i++){ 
        // 쿼리 길이만큼 돌기
            for(int j = queries[i][0]; j <= queries[i][1]; j++){ 
            // 쿼리의 1번째 까지 돌기
                if(arr[j] > queries[i][2]){ 
                // 만약 arr배열의 j번째 숫자가 k보다 클때의 조건
                    answer[i] = Math.min(answer[i], arr[j]); 
                    // 조건을 만족하면 answe[i]에 대입 근데 처음에는 4가 들어갈텐데 k==2이고, 
                    // 2보다 크면서 제일 작은수는 3이니깐 Math.min으로 for문을 돌면서 제일 작은 수를 대입시켜줌
                }
            }
            if(answer[i] == Integer.MAX_VALUE){ 
                answer[i] = -1;
                // 위에 answer에 정수 최대값을 넣었는데
                // 정수 최대값과 같으면 -1을 대입 즉, k보다 크면서 제일 작은 수가 없다는 뜻
            }
        }
        return answer;
    }
}

profile
ha lee :)

0개의 댓글