Q. 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.
각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int n = 0;
for(int i =0; i<queries.length; i++){
n = arr[queries[i][0]];
arr[queries[i][0]] = arr[queries[i][1]];
arr[queries[i][1]] = n;
}
return arr;
}
}
Q. 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.
각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
1.answer 배열을 Integer.MAX_VALUE 로 초기화 함 (정수의 최댓값) 이 값은 최소값을 찾는 과정에서 임시로 사용됨
for문을 통해 i, j 해당 query의 범위 내에서 반복됨
answer[j] = Math.min(answer[j], arr[i]); 만약 arr[i]가 현재까지 찾은 최소값인 answer[j]보다 작다면 answer[j]를 arr[i]로 업데이트 한다. 그러면 범위 내에 가장 작은 수를 찾을 수 있다
answer[j]가 여전히 Integer.MAX_VALUE 경우 결과가 존재하지 않으니 -1로 설정해준다.
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
Arrays.fill(answer, Integer.MAX_VALUE);
for (int j = 0; j < queries.length; j++) {
for (int i = queries[j][0]; i <= queries[j][1]; i++) {
if (arr[i] > queries[j][2]) {
answer[j] = Math.min(answer[j], arr[i]);
}
}
if (answer[j] == Integer.MAX_VALUE) answer[j] = -1;
}
return answer;
}
}