728x90
https://school.programmers.co.kr/learn/courses/30/lessons/181923
문제)정수 배열 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];
for (int i=0; i<queries.length; i++){
int a = queries[i][0];
int b = queries[i][1];
int c = queries[i][2];
int min = 0;
for(int j=a; j<=b; j++){
//최소값을 구하기 위한 for문
if(arr[j]>c){
min = arr[j];
}else{arr[j]가 c보다 큰 값이 없다면 -1을 가짐
answer[i] = -1;
}
}
for(int k=a; k<=b; k++){
if(arr[k]>c){
if(arr[k]<min){ //arr[j]>c값이 여러개 있을 때 사용
min = arr[k];
answer[i] = min;
}else{ //하나일 경우 사용
answer[i] = min;
}
}
}
}
return answer;
}
}
처음에 테스트는 통과했는데, 제출하면 자꾸 오류가 나서 반례 찾느라 고생좀 했당...
728x90
'프로그래밍 > Java(자바)' 카테고리의 다른 글
[프로그래머스] 배열의 원소만큼 추가하기 --java (0) | 2024.04.12 |
---|---|
[프로그래머스] 배열 비교하기 --java (0) | 2024.04.12 |
[프로그래머스] 수열과 구간 쿼리 3 --java (0) | 2024.04.11 |
자바 복습하기 : 2차원 배열(다차원 배열) (0) | 2024.04.09 |
[프로그래머스] 직사각형의 넓이 구하기 --java (0) | 2024.04.09 |