본문 바로가기

프로그래머스(Java)/Level 0

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

728x90

코드 힌트

  1. queries 배열에 있는 배열 [s, e, k]를 꺼내온다

  2. 각 query마다 s <= i <= e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더한다
    각 쿼리에서 시작 인덱스(s)부터 종료 인덱스(e)까지의 범위를 순회하면서, 해당 인덱스(i)가 k의 배수인지 확인합니다. 만약 i가 k의 배수라면 arr[i] 값을 1 증가시킵니다.

  3. 추가 설명
    • i % k == 0의 조건을 사용하여 i가 k의 배수인지를 확인합니다. 이 조건이 참이면 해당 인덱스의 배열 값을 1 증가시킵니다.
    • 최종적으로 변경된 배열을 반환합니다.
    예시queries 배열:
    • [0, 4, 1]: 0에서 4까지 모든 인덱스가 1의 배수이므로 모든 요소에 1을 더함.
    • [0, 3, 2]: 0에서 3까지 인덱스 중 2의 배수는 0과 2. 따라서 arr[0]과 arr[2]에 1을 더함.
    • [0, 3, 3]: 0에서 3까지 인덱스 중 3의 배수는 0과 3. 따라서 arr[0]과 arr[3]에 1을 더함.
    최종 결과:
    • [1, 2, 3, 5, 4]
    • [2, 2, 4, 5, 4]
    • [3, 2, 4, 6, 4]
    이 예시를 통해 i가 k의 배수라는 조건이 i % k == 0임을 확인할 수 있습니다.
    arr 원본 배열: [0, 1, 2, 4, 3]

 


정답은 더보기 클릭

더보기
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        
        // 각 쿼리(query)에 대해 순회
        for (int[] querie : queries) {
            int s = querie[0]; // 시작 인덱스 s
            int e = querie[1]; // 종료 인덱스 e
            int k = querie[2]; // k의 배수 조건
            
            // s부터 e까지 순회
            for (int i = s; i <= e; i++) {
                
                // i가 k의 배수인 경우 arr[i] 값을 1 증가
                if (i % k == 0) {
                    arr[i]++;
                }
            }
        }
        
        return arr; // 변경된 배열 반환
    }
}
728x90