수열과 구간 쿼리 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;
}
}