[Java] 29. 수열과 구간 쿼리 2

김주희's avatar
Jul 30, 2025
[Java] 29. 수열과 구간 쿼리 2

1. 문제 설명, 제한 사항, 입출력 예시

notion image
notion image
 

2. 아이디어

💡
  1. queries는 2차원 배열이므로 queries.length, queries[i], queries[i][j] 등이 각각 무엇을 의미하는지 정확하게 파악
  1. s부터 e까지 반복하며 조건 검사
 

3. 풀이 코드

class Solution { public int[] solution(int[] arr, int[][] queries) { int[] answer = new int[queries.length]; for (int i = 0; i < queries.length; i++) { int s = queries[i][0]; int e = queries[i][1]; int k = queries[i][2]; int min = 1000001; for (int j = s; j <= e; j++) { if (k < arr[j] && min >= arr[j]) { min = arr[j]; } } answer[i] = min == 1000001? - 1 : min; } return answer; } }
GPT 리팩토링
  1. 큰 수로 초기화
int min = 1000001 -> int min = Integer.MAX_VALUE
  1. 람다/스트림 적용
import java.util.Arrays; class Solution { public int[] solution(int[] arr, int[][] queries) { return Arrays.stream(queries) .mapToInt(q -> { int s = q[0], e = q[1], k = q[2]; return Arrays.stream(arr, s, e + 1) .filter(n -> n > k) .min() .orElse(-1); }) .toArray(); } }
 
Share article

jay0628