프로그래머스 수열과 구간 쿼리 1

KIMYEONGJUN·2026년 6월 25일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다.
queries의 원소는 각각 하나의 query를 나타내며, [s, e] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 arr[i]에 1을 더합니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.

내가 이 문제를 보고 생각해본 부분

Main62 클래스는 프로그램의 진입점인 main 메서드를 포함하고 있다.
main 메서드는 먼저 Solution9 클래스의 객체를 생성한다.
테스트용 정수 배열 arr과 쿼리 배열 queries를 정의한다. 여기서 arr은 [0,1,2,3,4]이며, queries는 [[0,1],[1,2],[2,3]]이다.
solution.solution(arr, queries) 호출을 통해 arr에 쿼리를 순차적으로 적용한 결과 배열을 반환받는다.
Arrays.toString(result) 메서드를 이용해 최종 결과 배열을 문자열로 변환하여 콘솔에 출력한다. 결과는 [1, 3, 4, 4, 4]가 된다.
Solution9 클래스는 문제의 핵심 로직을 담당한다.
solution 메서드는 입력 배열 arr과 2차원 배열 queries를 매개변수로 받는다.
queries 배열의 각 쿼리를 반복하며 처리한다.
각 쿼리는 [start, end] 구간을 나타내므로, 이 구간 내 인덱스에 포함된 배열 요소들에 1씩 더한다.
내부 for문에서 start부터 end까지 순서대로 배열 요소 값을 1씩 증가시킨다.
모든 쿼리 처리 후 변경된 배열 arr을 반환한다.

코드로 구현

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        for (int[] query : queries) {
            int start = query[0];
            int end = query[1];
            for (int i = start; i <= end; i++) {
                arr[i] += 1;
            }
        }
        return arr;
    }
}

프로그래머스 코드

package programmers;

import java.util.Arrays;

// 프로그래머스 수열과 구간 쿼리 1
public class Main62 {
    public static void main(String[] args) {
        Solution9 solution = new Solution9();

        int[] arr = {0, 1, 2, 3, 4};
        int[][] queries = {{0, 1}, {1, 2}, {2, 3}};
        int[] result = solution.solution(arr, queries);
        System.out.println(Arrays.toString(result));  // [1, 3, 4, 4, 4] 출력
    }
}

class Solution9 {
    public int[] solution(int[] arr, int[][] queries) {
        for (int[] query : queries) {
            int start = query[0];
            int end = query[1];
            for (int i = start; i <= end; i++) {
                arr[i] += 1;
            }
        }
        return arr;
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글