수열과 구간 쿼리 4
문제
- 정수 배열 arr과 2차원 정수 배열 queries가 매개변수로 주어집니다.
- queries의 원소는 각각 하나의 query를 나타내고, [s, e, k] 형태입니다.
- 각 qeury마다 순서대로 s <= i <= e인 모든 i에 대해
- i가 k의 배수이면 arr[i]에 1을 더합니다.
- 규칙에 맞게 queries를 처리한 arr을 출력하는 문제입니다.
- 입출력 예
-
arr queries result [0, 1, 2, 4, 3] [[0, 4, 1],[0, 3, 2],[0, 3, 3]] [3, 2, 4, 6, 4]
-
테스트 (인텔리제이)
- s, e, k를 쉽게 확인하기 위해 변수 선언을 합니다.
- for문을 이용하여 queries만큼 순회하도록 하고
- queries에서 원소를 꺼내 s, e, k에 저장합니다.
- arr의 크기만큼 순회하는 2중 for문을 만들어 순회하도록 하고
- if문으로 arr의 크기만큼 순회하는 j의 값을 s와 e 범위에 포함되는지 k의 배수인지 체크해서 answer 배열에 +1 더해줄 수 있도록 하면 문제를 풀 수 있습니다.
package com.namji.codingtest;
import java.util.Arrays;
public class 수열과_구간_쿼리_4 {
public static void main(String[] args) {
/*
정수 배열 arr과 2차원 정수 배열 queries가 매개변수로 주어집니다.
queries의 원소는 각각 하나의 query를 나타내고, [s, e, k] 형태입니다.
각 qeury마다 순서대로 s <= i <= e인 모든 i에 대해
i가 k의 배수이면 arr[i]에 1을 더합니다.
규칙에 맞게 queries를 처리한 arr을 출력하는 문제입니다.
입출력 예
arr queries result
[0, 1, 2, 4, 3] [[0, 4, 1],[0, 3, 2],[0, 3, 3]] [3, 2, 4, 6, 4]
입출력 설명
#1
각 쿼리에 따라 arr가 다음과 같이 변합니다.
arr
[0, 1, 2, 4, 3]
[1, 2, 3, 5, 4]
[2, 2, 4, 5, 4]
[3, 2, 4, 6, 4]
따라서 [3, 2, 4, 6, 4]를 return 합니다.
*/
int[] arr = {0, 1, 2, 4, 3};
int[][] queries = {{0, 4, 1}, {0, 3, 2}, {0, 3, 3}};
int[] answer = Arrays.copyOf(arr, arr.length);
int s, e, k = 0;
for (int i = 0; i < queries.length; i++) {
s = queries[i][0];
e = queries[i][1];
k = queries[i][2];
for (int j = 0; j < arr.length; j++) {
if (s <= j && e >= j && j % k == 0) {
answer[j] += 1;
}
}
}
System.out.println(Arrays.toString(answer));
}
}
프로그래머스 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = Arrays.copyOf(arr, arr.length);
int s, e, k = 0;
for (int i = 0; i < queries.length; i++) {
s = queries[i][0];
e = queries[i][1];
k = queries[i][2];
for (int j = 0; j < arr.length; j++) {
if (s <= j && e >= j && j % k == 0) {
answer[j] += 1;
}
}
}
return answer;
}
}
'Coding Test > Java Coding Test' 카테고리의 다른 글
[프로그래머스 / 자바] - 잘라서 배열로 저장하기 (1) | 2024.07.24 |
---|---|
[프로그래머스 / 자바] - 2진수 더하기 (1) | 2024.07.23 |
[프로그래머스 / 자바] - 리스트 자르기 (1) | 2024.07.22 |
[프로그래머스 / 자바] - 2의 영역 (0) | 2024.07.22 |
[프로그래머스 / 자바] - 7의 개수 (0) | 2024.07.19 |