Algorithm/Programmers 입문

[프로그래머스 코딩기초 트레이닝] 수열과 구간 쿼리 1 (JAVA)

JunFe 2023. 11. 28. 23:48
반응형

문제 설명

 

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e] 꼴입니다.

 query마다 순서대로 s  i  e인 모든 i에 대해 arr[i]에 1을 더합니다.

위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.


제한사항

1 ≤ arr의 길이 ≤ 1,000

  • 0 ≤ arr의 원소 ≤ 1,000,000

1 ≤ queries의 길이 ≤ 1,000

  • 0 ≤ s  e < arr의 길이

입출력 예

 

arr queries result
[0,1,2,3,4] [[0,1],[1,2],[2,3]] [1,3,4,4,4]

입출력 예 설명

 

입출력 예 #1

각 쿼리에 따라 arr가 다음과 같이 변합니다.

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]

 

따라서 [1, 3, 4, 4, 4]를 return 합니다.


풀이

 

-> arr배열을 반복문을 통해 queries의 길이 만큼 반복해서 arr배열에서  queries의 값에 해당하는 index를 찾아 들어있는 값을 1씩 증가시켜준다. 그 다음 answer 배열에 담아서 결과를 return한다.


코드

 

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