[문제]
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.
각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
[내 풀이]
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
for(int j= 0; j< queries.length; j++){
int min = Integer.MAX_VALUE;
for(int i =queries[j][0]; i<queries[j][1]+1; i++){
if (arr[i]> queries[j][2]){
min = Math.min(min, arr[i]);
}
}
answer[j] = (min == Integer.MAX_VALUE)? -1 : min;
}
return answer;
}
}
- Integer.MAX_VALUE : 정수의 최댓값
- 변수 초기화에 유의하기
[다른 사람의 풀이]
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = {};
return IntStream.range(0, queries.length) #0~queries 배열 길이까지의 정수 스트림 생성
.map(q -> IntStream.rangeClosed(queries[q][0], queries[q][1]) #쿼리에 대해 해당하는 배열 범위에 대한 정수 스트림 생성
.map(i -> arr[i]) #인덱스에 해당하는 배열의 요소 가져옴
.filter(i -> i > queries[q][2])#queries[q][2]보다 큰 값들만 필터링
.min().orElse(-1) #최소값 찾음, 없을 경우 -1
).toArray(); #스트림의 요소들을 배열로 변환해 반환
}
}
- Stream 공부하기!
'개발 > 코테' 카테고리의 다른 글
[JAVA] 수열과 구간 쿼리 4 (0) | 2024.04.12 |
---|---|
[JAVA] 수열과 구간 쿼리3 (1) | 2024.04.12 |
[JAVA] 수 조작하기 2 (1) | 2024.04.12 |
[JAVA] 수 조작하기1 (0) | 2024.04.11 |
[JAVA] 마지막 두 원소 (0) | 2024.04.11 |