반응형
3보다 2가 더 어렵다
기초 문제가 올라가있는 순서대로 난이도가 조금씩 올라가는 것 같다
문제 설명
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.
각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
입출력 예
arr queries result [0,1,2,4,3] [0,4,2],[0,3,2],[0,2,2] [3,4,-1]
입출력 예
첫 번째 쿼리의 범위에는 0, 1, 2, 4, 3이 있으며 이 중 2보다 크면서 가장 작은 값은 3입니다.
두 번째 쿼리의 범위에는 0, 1, 2, 4가 있으며 이 중 2보다 크면서 가장 작은 값은 4입니다.
세 번째 쿼리의 범위에는 0, 1, 2가 있으며 여기에는 2보다 큰 값이 없습니다.
따라서 [3, 4, -1]을 return 합니다.
문제를 읽고서 무슨 말이지 전혀 이해가 안될 때 예시를 보는게 최고인 것 같다
일단 코드 써가면서 이클립스에서 풀어보고 디버그 찍으면서 답을 찾아본다
문제를 잘 푸는 방.법.은 알았는데 아직 많이 풀어보지 않아서 여전히 어렵다 ㅠㅠㅠㅠ
*이클립스에서 돌려본 코드
class Solution2 {
public static void main(String[] args) {
int[] arr = new int[]{0,1,2,4,3};
int[][] queries = new int[][]{{0,4,2},{0,3,2},{0,2,2}};
solution2(arr, queries);
System.out.println(Arrays.toString(solution2(arr, queries)));
}
public static int[] solution2(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
for(int i=0; i<queries.length; i++){
int start = queries[i][0];
int end = queries[i][1];
int lim = queries[i][2];
int tmp = 0;
for(int j = start; j <= end; j++){
//System.out.println(limit + " : " + arr[j]);
if(lim < arr[j]){
//System.out.println(tmp + " : " + arr[j]);
// 1번 표현 방법
// if(tmp != 0 && tmp < arr[j]) continue;
// 2번 표현방법
if(tmp != 0){
if(tmp < arr[j])continue;
}
tmp = arr[j];
}
}
if(tmp == 0)tmp = -1;
//System.out.println(tmp);
answer[i] = tmp;
}
return answer;
}
}
*내가 해결한 코드
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = new int[queries.length];
for(int i=0; i<queries.length; i++){
int start = queries[i][0];
int end = queries[i][1];
int lim = queries[i][2];
int tmp = 0;
for(int j = start; j <= end; j++){
if(lim < arr[j]){
if(tmp != 0 && tmp < arr[j]) continue;
tmp = arr[j];
}
}
if(tmp == 0)tmp = -1;
answer[i] = tmp;
}
return answer;
}
}
수열과 구간 쿼리 3, 2 풀었으니 이제 나머지 절반 남았다 ...
반응형
'코테 준비(with 프로그래머스)' 카테고리의 다른 글
프로그래머스 day7 - 카운트 업 (0) | 2023.11.27 |
---|---|
***프로그래머스 day7, Java - 수열과 구간 쿼리4 (0) | 2023.11.23 |
프로그래머스 day6, Java - 수열과 구간 쿼리3 (1) | 2023.11.15 |
프로그래머스 day6 - 마지막 두 원소 (1) | 2023.11.11 |
프로그래머스 day6 - 수 조작하기2 (0) | 2023.11.10 |