수열과 구간쿼리 2
<코드>
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int len = queries.length;
int[] answer = new int[len];
Arrays.fill(answer, -1);
for(int i = 0; i < len; i++) {
int s = queries[i][0];
int e = queries[i][1];
int k = queries[i][2];
for(int j = s; j <= e; j++) {
if(arr[j] > k) {
answer[i] = answer[i] == -1 ? arr[j] : Math.min(arr[j], answer[i]);
}
}
}
return answer;
}
}
<문제풀이>
answer 배열의 값을 모두 -1로 초기화했다.
queries의 값을 가져와 s~e 범위에서 k보다 큰 값의 arr 배열의 요소를 찾는다. (이중 for문 안의 조건문)
삼항 연산자를 사용하여 return 할 answer 배열의 요소를 찾는다.
만약 answer [i]의 값이 -1이면 아직 탐색을 시작하지 않았다는 의미 이므로 arr [j] 값을 그대로 넣어준다.
이후에 answer [i]의 값이 -1이 아니면 k 보다 큰 수중에 가장 작은 값을 찾기 위해 Math.min() 메서드를 사용하여 최솟값을 찾는다.
이때, s~e 범위에서 k보다 큰 값이 없을 경우 -1이 그대로 남게 된다.
'프로그래머스' 카테고리의 다른 글
[코딩테스트 연습] 문자열 여러 번 뒤집기 - Lv.0 (0) | 2023.05.16 |
---|---|
[코딩테스트 연습] 배열 만들기 2 - Lv.0 (0) | 2023.05.08 |
[코딩테스트 연습] 영어가 싫어요 - Lv.0 (0) | 2023.05.06 |
[코딩테스트 연습] 코드 처리하기 - Lv.0 (0) | 2023.05.06 |
[코딩테스트 연습] 문자열 겹쳐쓰기 - Lv.0 (0) | 2023.05.04 |