본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 수열과 구간 쿼리 2

728x90

코드 힌트

  1. 배열 생성:
    • 결과를 저장할 배열을 queries의 길이만큼 생성합니다.
  2. 반복문을 통한 쿼리 처리:
    • 각 쿼리에 대해 시작 인덱스 s, 끝 인덱스 e, 기준 값 k를 가져옵니다.
  3. 구간 내 최소값 찾기:
    • s부터 e까지의 구간에서 k보다 큰 값 중 가장 작은 값을 찾습니다.
  4. 결과 저장:
    • 만약 k보다 큰 값이 없으면 -1을, 그렇지 않으면 찾은 최소 값을 결과 배열에 저장합니다.

 


정답은 더보기 클릭

더보기
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        // 쿼리 수만큼 결과 배열 생성
        int[] result = new int[queries.length];
        
        int idx = 0; // 결과 배열의 인덱스를 관리할 변수
        for (int[] query : queries) {
            // 쿼리에서 시작 인덱스, 끝 인덱스, 기준 값 추출
            int s = query[0];
            int e = query[1];
            int k = query[2];
            
            // 초기 최소 값을 최대 정수 값으로 설정
            int minNum = Integer.MAX_VALUE;
            for (int i = s; i <= e; i++) {
                // 현재 값이 k보다 크고, 현재 최소 값보다 작으면 갱신
                if (arr[i] > k && arr[i] < minNum) {
                    minNum = arr[i];
                }
            }
            // 최소 값이 갱신되었으면 결과 배열에 저장, 아니면 -1 저장
            if (minNum < Integer.MAX_VALUE)
                result[idx++] = minNum;
            else
                result[idx++] = -1;
        }
        return result; // 결과 배열 반환
    }
}

 

728x90