알고리즘공부

프로그래머스 Lv0 - 수열과 구간 쿼리 2

jonghyeon6084 2024. 3. 19. 16:16
728x90

1. 문제 설명

 - 정수 배열 arr 와 2차원 정수 배열 queries 이 주어집니다. queries 의 원소는 각각 하나의 query 를 타나대며, [s, e, k] 꼴입니다. 각 query 마다 순서대로 s <= i <= e 의 모든 i에 대해 k 보다 크면서 작은 arr[i] 를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 함수를 완성해주세요. 단, 특정 쿼리의 답이 존재하지 않으면 -1를 저장합니다.

2. 제한사항

  • 1 <= arr 의 길이 <= 1,000
    • 0 <= arr 의 원소 <= 1,000,000
  • 1 <= queries 의 길이 <= 1,000
    • 0 <= s <= e <= arr 의 길이
    • 0 <= k <= 1,000,000

3. 입출력 예

이 문제같은 경우에 고민하다가 바로 풀리지 않아 구글링과 다른 사람들의 풀이를 이용해서 문제를 파악했다.

4. 작성한 코드

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int[queries.length];
        Arrays.fill(answer, -1);
        
        for(int i = 0; i < queries.length; i++){
            int s = queries[i][0];
            int e = queries[i][1];
            int k = queries[i][2];
            
            int minValue = Integer.MAX_VALUE;
            
            for(int j = s; j <= e; j++){
                if(arr[j] > k && arr[j] < minValue){
                    minValue = arr[j];
                }
            }
            if(minValue != Integer.MAX_VALUE){
                answer[i] = minValue;
            }
        }
        return answer;
    }
}