i가 k의 배수이면 arr[i]에 1을 더한다.

여기서 i는 queries의 index가 아닌 반복해서 돌아가는 i의 수일 뿐이다.

(querise[0][1] (4) 이라면 i는 그냥 숫자 0 부터 4를 의미함.
querise[0][3] (3) 이라면 i는 그냥 숫자 0부터 3을 의미함.)

 

Solution 1) 내 풀이
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        
        for (int i = 0; i < queries.length; i++) {    
            for (j = 0; j <= queries[i][1]; j++) {  
                if (j % queries[i][2] == 0) {
                    arr[j]++;
                }
            }
        }
        return arr;
    }
}

(이중 for문의 안쪽 반복문 초기치(j의 초기치)를 습관적으로 0으로 잡고 시작해서 다 틀렸다..)

 

 

Solution 2) 다른 사람의 풀이
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++) {  
                if (j % queries[i][2] == 0) {
                    arr[j]++;
                }
            }
        }
        return arr;
    }
}
arr 배열의 시작이 무조건 0부터가 아닌데 습관적으로 시작을 0으로 잡아 헷갈렸다.
(j = 0; 에서 j = querise[i][0];으로 수정 된 모습)
초기치 설정에도 좀 더 신경을 쓰자

 

+ Recent posts