[JAVA 문제 풀이] 119. 수열과 구간 쿼리 2

프로그래머스 (181923)
Stupefyee's avatar
Mar 05, 2025
[JAVA 문제 풀이] 119. 수열과 구간 쿼리 2
notion image
 

내가 작성한 코드

import java.util.*; class Solution { public int[] solution(int[] arr, int[][] queries) { int[] answer = new int[queries.length]; // -1로 초기화 for(int i = 0; i < answer.length; i++){ answer[i] = -1; } // 숫자 찾기 for(int i = 0; i < queries.length; i++){ int start = queries[i][0]; int end = queries[i][1]; int k = queries[i][2]; // 범위에 해당하는 배열 생성 int[] newArr = Arrays.copyOfRange(arr, start, end + 1); Arrays.sort(newArr); for(int j : newArr){ if(j > k){ answer[i] = j; break; } } } return answer; } }
 

다른 사람의 코드

import java.util.stream.IntStream; class Solution { public int[] solution(int[] arr, int[][] queries) { int[] answer = {}; // queries 배열의 각 인덱스를 순회 (q는 queries의 인덱스) return IntStream.range(0, queries.length) .map(q -> // 각 쿼리에 대해 처리 // 해당 쿼리의 범위(queries[q][0] ~ queries[q][1])에 대해 스트림 생성 IntStream.rangeClosed(queries[q][0], queries[q][1]) // arr의 해당 범위 내 요소 추출 .map(i -> arr[i]) // queries[q][2]보다 큰 값들만 필터링 .filter(i -> i > queries[q][2]) // 필터링된 요소 중 최소값 찾기 (없으면 -1 반환) .min().orElse(-1) ) // 최종적으로 각 쿼리 결과(min값 혹은 -1)를 배열로 변환 .toArray(); } }
 
Share article

stupefyee