정수 배열 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];
int a=0; //i의 범위 중 최소
int b=0; //i의 범위 중 최대
int c=-1; //arr[i] 의 최솟값
for(int i=0; i<queries.length;i++){
a=queries[i][0];
b=queries[i][1];
for(int j=a; j<=b; j++){
if(arr[j]>queries[i][2]){
if(c==-1){
c=arr[j];
}//초기에 세팅
if(arr[j]<c){
c=arr[j];
}//더 작은 값이 나타났을때 개로 변환
}
}
answer[i]=c;
c=-1; //for 문 반복하기에 다시 -1 대입
}
return answer;
}
}
문제에서 주어진 조건대로 일단 2차배열에 있는 것들이 기준이 되기 때문에 그 배열을
기준으로 for 문을 돌린다.
그리고 최솟값을 찾아야하기 때문에 arr 배열 안에 있는 애들은 for 문을 돌려서
최솟값을 찾아준뒤 반복문 마지막에 답변 배열에 넣어주면 끝이다!
'자바 알고리즘 문제' 카테고리의 다른 글
| 정사각형으로 만들기 (0) | 2024.03.15 |
|---|---|
| 무작위로 K개 의 수 뽑기 ( 못 풀었음 ) (1) | 2024.03.15 |
| 삼각형의 완성조건 (2) (0) | 2024.03.11 |
| 구슬을 나누는 경우의 수 (0) | 2024.03.10 |
| 문자열 여러 번 뒤집기 (0) | 2024.03.09 |