본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 수열과 구간 쿼리 1

by nam_ji 2024. 6. 26.

수열과 구간 쿼리 1

문제

  • 정수 배열 arr과 2차원 정수 배열 queries가 매개변수로 주어집니다.
  • queries의 원소는 각각 하나의 query를 나타내며,
  • [s, e] 형태입니다.
  • 각 query마다 순서대로 s <= i <= e인 모든 i에 대해 arr[i]에 1을 더합니다.
  • 모두 더한 arr을 출력하는 문제입니다.
  • 입출력 예
    • arr queries result
      [0, 1, 2, 3, 4] [[0, 1], [1, 2], [2, 3]] [1, 3, 4, 4, 4]


테스트 (인텔리제이)

  • 우선 queries는 2차원 배열이기 떄문에 원소의 원소를 꺼내기 위해 2중 for문을 사용했습니다.
  • 첫 번째 for문은 2차원 배열 안에 배열로 묶여 있는 원소를 꺼내기 위해 설정하고
  • 두 번째 for문은 문제의 의도에 맞게 s와 e 사이만큼만 순회하도록 하여
  • s와 e를 포함하는 arr의 원소는 다 1씩 더하도록 했습니다.
import java.io.SequenceInputStream;
import java.util.Arrays;

public class 수열과_구간_쿼리_1 {
  public static void main(String[] args) {
    /*
    정수 배열 arr과 2차원 정수 배열 queries가 매개변수로 주어집니다.
    queries의 원소는 각각 하나의 query를 나타내며,
    [s, e] 형태입니다.
    각 query마다 순서대로 s <= i <= e인 모든 i에 대해 arr[i]에 1을 더합니다.
    모두 더한 arr을 출력하는 문제입니다.

    입출력 예
    arr	            queries	                result
    [0, 1, 2, 3, 4]	[[0, 1],[1, 2],[2, 3]]	[1, 3, 4, 4, 4]

    입출력 설명
    i	  queries[i]	  arr
    -	  -	            [0, 1, 2, 3, 4]
    0	  [0,1]	        [1, 2, 2, 3, 4]
    1	  [1,2]	        [1, 3, 3, 3, 4]
    2	  [2,3]	        [1, 3, 4, 4, 4]
     */

    int[] arr = {0, 1, 2, 3, 4};
    int[][] queries = {{0, 1}, {1, 2}, {2, 3}};

    for (int i = 0; i < queries.length; i++) {
      for (int j = queries[i][0]; j <= queries[i][1]; j++) {
        arr[j]++;
      }
    }

    System.out.println(Arrays.toString(arr));
  }
}

프로그래머스 코드

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        
        for (int i = 0; i < queries.length; i++) {
            for (int j = queries[i][0]; j <= queries[i][1]; j++) {
                arr[j]++;
            }
        }
        
        return arr;
    }
}