반복문 : 수열과 구간 쿼리 4

2dean·2023년 6월 8일
0

Algorithm

목록 보기
5/17

문제 1

문제 : 수열과 구간 쿼리 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[i][0]과 arr[i][1] 사이의 수를 담을 list를 만들고 숫자들을 저장한다.
  2. list에 담긴 수 중에 arr[i][2]의 배수를 찾는다.
  3. 해당하는 arr[i]에 +1 해준다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int[arr.length];
        List<Integer> list = new ArrayList<>();

        for (int i=0; i<queries.length; i++) {
            list.clear();

            for (int start = queries[i][0]; start<=queries[i][1]; start++){
                list.add(start);
            }
            for (int j=0; j<list.size(); j++) {
                if(list.get(j)%queries[i][2] == 0) {
                    arr[j] += 1;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            answer[i] = arr[i];
        }

        return answer;
    }
}

배수?

  • 1의 배수 : 모든 자연수(정수). 1은 곱셈의 항등원이다.
  • 2의 배수 : '일의 자리'가 0 또는 2의 배수(2, 4, 6, 8), 즉 짝수인 수.
  • 5의 배수 : '일의 자리'가 5 또는 0인 수.
profile
냅다 써보는 공부의 흔적😇

0개의 댓글

관련 채용 정보