프로그래머스/0단계
수열과 구간 쿼리 2
긴가우딘
2025. 1. 13. 16:10
문제 설명
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.
각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
문제 읽으면서 생각 정리
- 일단 foreach로 하나씩 뽑아내기를 생각했으나 되지 않아 for문으로 변경
- s<=i<=e로 for문을 한번 더 돌린다
- if문으로 arr[i]가 k보다 크면서 가장 작은 수 찾아내어 answer에 집어넣는다 - Integer.MAX_VALUE이용
- min이 없으면 -1을 넣는다 - 삼항 연산자 이용
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
for(int q=0; q<queries.length; q++) {
int s = queries[q][0];
int e = queries[q][1];
int k = queries[q][2];
int min = Integer.MAX_VALUE;
for(int i=s; i<=e; i++) {
if(arr[i]>k && arr[i] < min) {
min = arr[i];
}
answer[q] = (min == Integer.MAX_VALUE) ? -1 : min;
}
}
return answer;
}
}