
내가 생각했을때 문제에서 원하는부분
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다.
queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더합니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
내가 이 문제를 보고 생각해본 부분
solution 메서드는 정수 배열 arr과 2차원 배열 queries를 입력받아, 쿼리 순서대로 주어진 조건을 적용한다.
각 쿼리 [s, e, k]에 대해서 인덱스 s부터 e까지 반복하며, 인덱스 i가 k의 배수인지 검사한다.
만약 k가 0이 아니고 인덱스가 k의 배수이면 해당 인덱스의 arr[i] 값을 1 증가시킨다.
모든 쿼리 처리가 끝나면 변형된 arr 배열을 반환한다.
main 메서드에서는 예제 입력을 생성하고 solution 메서드를 호출한다.
그 결과를 배열 형태로 받아와 Arrays.toString을 이용해 콘솔에 출력한다.
코드로 구현
class Solution {
public int[] solution(int[] arr, int[][] queries) {
for (int[] query : queries) {
int s = query[0];
int e = query[1];
int k = query[2];
for (int i = s; i <= e; i++) {
if (k != 0 && i % k == 0) {
arr[i]++;
}
}
}
return arr;
}
}
프로그래머스 코드
package programmers;
import java.util.Arrays;
// 프로그래머스 수열과 구간 쿼리 4
public class Main23 {
// 쿼리를 적용하여 arr 배열을 변경한 후 결과를 반환하는 메서드이다.
public static int[] solution(int[] arr, int[][] queries) {
for (int[] query : queries) {
int s = query[0];
int e = query[1];
int k = query[2];
for (int i = s; i <= e; i++) {
if (k != 0 && i % k == 0) {
arr[i]++;
}
}
}
return arr;
}
public static void main(String[] args) {
int[] arr = {0, 1, 2, 4, 3};
int[][] queries = {
{0, 4, 1},
{0, 3, 2},
{0, 3, 3}
};
// solution 메서드를 호출해 결과를 받아 온다.
int[] result = solution(arr, queries);
// 변경된 배열을 출력한다.
System.out.println(Arrays.toString(result));
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.