IT/코딩테스트

[프로그래머스] 수열과 구간 쿼리 4 - java

타미미 2025. 3. 17. 20:51

level 0

 

[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/181922

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[문제 설명]

arr : 변환하려는 배열

queries : 변환 조건 [ s, e, k ] 

               s <= i <= e 이면서, i 가 k의 배수이면 arr[i] 를 +1 하라는 조건

 

위와 같은 예시가 주어졌을 때,

시작 : arr = [0, 1, 2, 4, 3]

첫번째 조건 : query = [ 0, 4, 1 ]

                      s = 0 / e = 4 / k = 1

                      0 <= i <= 4 일 때,  i = 0, 1, 2, 3, 4

                      0, 1, 2, 3, 4 모두 1의 배수이므로, 모든 값 + 1

                      arr = [1, 2, 3, 5, 4]

두번째 조건 : query = [ 0, 3, 2 ]

                      s = 0 / e = 3 / k = 2

                      0 <= i <= 3 일 때,  i = 0, 1, 2, 3

                      0, 2 가 2의 배수이므로 arr[0], arr[2] 에 대해 +1

                      arr = [2, 2, 4, 5, 4]

세번째 조건 : query = [ 0, 3, 3 ]

                      s = 0 / e = 3 / k = 3

                      0 <= i <= 3 일 때,  i = 0, 1, 2, 3

                      0, 3 이 3의 배수이므로 arr[0], arr[3] 에 대해 +1

                      arr = [3, 2, 4, 6, 4]

 

[풀이]

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = Arrays.copyOf(arr, arr.length);
        
        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] = answer[i] + 1;
                }
            }
        }
        return answer;
    }
}
반응형