📝 algorithm

[프로그래머스] 수열과 구간 쿼리 4 JAVA(자바) 문제 풀이 📝

c0zi 2023. 9. 26. 21:28
문제 이름

수열과 구간 쿼리 4

 

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

각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더합니다.

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

 

제한사항
  • 1 ≤ arr의 길이 ≤ 1,000
    • 0 ≤ arr의 원소 ≤ 1,000,000
  •  1 ≤ queries의 길이 ≤ 1,000
    • 0 ≤ s ≤ e < arr의 길이
    • 0 ≤ k ≤ 5

 


☑️ 문제 풀이

 

📍 해결방법

문제 풀기에 앞서 문제 설명을 읽으며 이게 무슨 소리야 ..? 싶었다면 0은 (자기 자신을 제외한) 모든 정수의 배수라는 것을 알고 시작하자 !!

> 난 '오잉 ? 0이 1의 배수인가 ??' 하면서 계속 고민 했다.

 

1. 먼저 foreach를 사용한다 ⇒ queries의 배열을 int[] query 배열을 통해 받는다.

2. 각 query에서 index 0, 1, 2 값을 s, e, k로 받는다.

3. for문을 통해 s부터 e까지 i가 k로 나누어 진다면(i가 k의 배수라면) answer[i]에 1을 더한다.

 

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        
        int[] answer = arr;
        
        for (int[] query : queries) {
            int s = query[0];
            int e = query[1];
            int k = query[2];

            for (int i = s; i <=e; i++) {
                if (i%k == 0) {
                    answer[i] += 1;
                }
            }
        }
        
        return answer;
        
    }
}