
내가 작성한 코드
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