![[Java] 29. 수열과 구간 쿼리 2](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BJava%255D%252029.%2520%25EC%2588%2598%25EC%2597%25B4%25EA%25B3%25BC%2520%25EA%25B5%25AC%25EA%25B0%2584%2520%25EC%25BF%25BC%25EB%25A6%25AC%25202%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Djay0628&w=2048&q=75)
1. 문제 설명, 제한 사항, 입출력 예시


2. 아이디어
- queries는 2차원 배열이므로 queries.length, queries[i], queries[i][j] 등이 각각 무엇을 의미하는지 정확하게 파악
- 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 리팩토링
- 큰 수로 초기화
int min = 1000001 -> int min = Integer.MAX_VALUE
- 람다/스트림 적용
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