알고리즘공부
프로그래머스 Lv0 - 수열과 구간 쿼리 2
jonghyeon6084
2024. 3. 19. 16:16
728x90
1. 문제 설명
- 정수 배열 arr 와 2차원 정수 배열 queries 이 주어집니다. queries 의 원소는 각각 하나의 query 를 타나대며, [s, e, k] 꼴입니다. 각 query 마다 순서대로 s <= i <= e 의 모든 i에 대해 k 보다 크면서 작은 arr[i] 를 찾습니다. 각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 함수를 완성해주세요. 단, 특정 쿼리의 답이 존재하지 않으면 -1를 저장합니다.
2. 제한사항
- 1 <= arr 의 길이 <= 1,000
- 0 <= arr 의 원소 <= 1,000,000
- 1 <= queries 의 길이 <= 1,000
- 0 <= s <= e <= arr 의 길이
- 0 <= k <= 1,000,000
3. 입출력 예
이 문제같은 경우에 고민하다가 바로 풀리지 않아 구글링과 다른 사람들의 풀이를 이용해서 문제를 파악했다.
4. 작성한 코드
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
Arrays.fill(answer, -1);
for(int i = 0; i < queries.length; i++){
int s = queries[i][0];
int e = queries[i][1];
int k = queries[i][2];
int minValue = Integer.MAX_VALUE;
for(int j = s; j <= e; j++){
if(arr[j] > k && arr[j] < minValue){
minValue = arr[j];
}
}
if(minValue != Integer.MAX_VALUE){
answer[i] = minValue;
}
}
return answer;
}
}