본문 바로가기

알고리즘 테스트 공부

수열과 구간 쿼리 2

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;
    }
}

 

 

 

 

 

다른풀이!!

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {

        int[] answer = new int[queries.length];
        Arrays.fill(answer, -1);

        for (int idx = 0; idx < queries.length; idx++) {
            int[] query = queries[idx];
            int s = query[0], e = query[1], k = query[2];

            for (int i = s; i <= e; i++) {
                if (k < arr[i]) {
                    answer[idx] = answer[idx] == -1 ? arr[i] : Math.min(answer[idx], arr[i]);
                }
            }

        }

        return answer;
    }
}
import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = {};
        return IntStream.range(0, queries.length)
                .map(q -> IntStream.rangeClosed(queries[q][0], queries[q][1])
                        .map(i -> arr[i])
                        .filter(i -> i > queries[q][2])
                        .min().orElse(-1)
                ).toArray();
    }
}
import java.util.*;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int idx = 0;
        int[] answer = new int[queries.length];

        for (int[] query : queries) {
            int s = query[0], e = query[1], k = query[2];
            int min = Integer.MAX_VALUE;

            for (int i = s;i <= e;i++)
                if (arr[i] > k)
                    min = Math.min(arr[i], min);

            answer[idx++] = min == Integer.MAX_VALUE ? -1 : min;
        }

        return answer;
    }
}
import java.util.*;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        return Arrays.stream(queries).mapToInt(q -> {
            int min = Arrays.stream(arr, q[0], q[1] + 1).filter(n -> n > q[2]).min().orElse(-1);
            return min == Integer.MAX_VALUE ? -1 : min;
        }).toArray();
    }
}

'알고리즘 테스트 공부' 카테고리의 다른 글

배열 만들기 2  (0) 2024.01.02
수열과 구간 쿼리 4  (0) 2024.01.01
수열과 구간 쿼리 3  (0) 2023.12.28
수 조작하기 2  (0) 2023.12.28
수 조작하기 1  (0) 2023.12.27