반응형
문제 설명
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더합니다.
위 규칙에 따라 queries를 처리한 이후의 arr을 return하는 solution 함수를 완성해주세요.
입출력 예
arr queries result [0,1,2,4,3] [0,4,1],[0,3,2],[0,3,3] [3,2,4,6,4]
입출력 예
각 쿼리에 따라 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 합니다.
오늘도 문제 한번에 이해가 안되서 예시를 보았다 => 근데 예시만 보면 안되는 것이었다 ....
queries :
첫번째 i값은 0<=i<=4, k값 1
두번째 i값은 0<=i<=3, k값 2
세번째는 두번째와 동일 , k값 3
진짜 너무 너무 어려웠다.....
*테스트케이스는 성공이지만 "제출 후 채점하기"하면 실패
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = Arrays.copyOf(arr, arr.length);
//answer = Arrays.copyOf(arr, arr.length);
for (int i = 0; i < queries.length; i++) {
int start = queries[i][0];
int end = queries[i][1];
int multi = queries[i][2];
for (int j = start; j <= end; j++) {
if(arr[j]%multi==0){
answer[j]+=1;
}
}
}
return answer;
}
}
질문하기에서 아래 글을 보고 원인을 알았다
(JAVA)문제가 이해안되시는분 : 인덱스가 k에 배수냐는거에요 arr[i]값이 아니라
*내가 해결한 코드 : 최종코드 * : arr[j]가 아니라 주소값의 배수인 경우로 수정해줌
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = Arrays.copyOf(arr, arr.length);
//answer = Arrays.copyOf(arr, arr.length);
//answer = arr; 하면 왜 안되는지 이해해야함
//+1해줄때 기본 배열 값까지 바뀐다, 복사가 아니라 둘이 같다고 선언
for (int i = 0; i < queries.length; i++) {
int start = queries[i][0];
int end = queries[i][1];
int multi = queries[i][2];
for (int j = start; j <= end; j++) {
// arr[j] 값이 아니라 주소값만 비교
if(j%multi==0){
answer[j]+=1;
}
}
}
return answer;
}
}
반응형
'코테 준비(with 프로그래머스)' 카테고리의 다른 글
프로그래머스 day7 - 배열 만들기2 (1) | 2023.11.28 |
---|---|
프로그래머스 day7 - 카운트 업 (0) | 2023.11.27 |
프로그래머스 day6, Java - 수열과 구간 쿼리2 (0) | 2023.11.15 |
프로그래머스 day6, Java - 수열과 구간 쿼리3 (1) | 2023.11.15 |
프로그래머스 day6 - 마지막 두 원소 (1) | 2023.11.11 |