알고리즘

[프로그래머스, 자바, 181923번] 수열과 구간 쿼리 2

hminor 2024. 10. 1. 15:39
반응형

풀이

  • 이전 문제와 마찬가지고 풀이는 간단한데
  • 다른 풀이를 보고 적용해보면 추후에 도움이 될 것 같아서 적용.
  • 여기에서 특징점은 2개의 map 사용과
  • 그에 따른 min() 후 없다면 orElse(-1)로 return 하는 것이 가장 좋았다.

 

import java.util.stream.IntStream;
class Solution {
    // public int[] solution(int[] arr, int[][] queries) {
    //     int[] answer = new int[queries.length];
    //     int idx = 0;
    //     for (int[] li: queries) {
    //         int num = 1000001;
    //         for (int i=li[0]; i<=li[1]; i++) {
    //             if (arr[i]>li[2] && num>arr[i]) num = arr[i];
    //         }
    //         answer[idx] = num==1000001?-1:num;
    //         idx++;
    //     }
    //     return answer;
    // }
    
    public int[] solution(int[] arr, int[][] queries) {
        return IntStream.range(0,queries.length)
            .map(i->IntStream.rangeClosed(queries[i][0],queries[i][1])
                .map(j-> arr[j])
                .filter(j->j>queries[i][2])
                .min().orElse(-1)
                ).toArray();
    }
}