문제 이름
수열과 구간 쿼리 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의 길이 ≤ 1,000
- 0 ≤ arr의 원소 ≤ 1,000,000
- 1 ≤ queries의 길이 ≤ 1,000
- 0 ≤ s ≤ e < arr의 길이
- 0 ≤ k ≤ 5
☑️ 문제 풀이
📍 해결방법
문제 풀기에 앞서 문제 설명을 읽으며 이게 무슨 소리야 ..? 싶었다면 0은 (자기 자신을 제외한) 모든 정수의 배수라는 것을 알고 시작하자 !!
> 난 '오잉 ? 0이 1의 배수인가 ??' 하면서 계속 고민 했다.
1. 먼저 foreach를 사용한다 ⇒ queries의 배열을 int[] query 배열을 통해 받는다.
2. 각 query에서 index 0, 1, 2 값을 s, e, k로 받는다.
3. for문을 통해 s부터 e까지 i가 k로 나누어 진다면(i가 k의 배수라면) answer[i]에 1을 더한다.
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = arr;
for (int[] query : queries) {
int s = query[0];
int e = query[1];
int k = query[2];
for (int i = s; i <=e; i++) {
if (i%k == 0) {
answer[i] += 1;
}
}
}
return answer;
}
}
'📝 algorithm' 카테고리의 다른 글
[SWEA] 2063번 중간값 찾기 JAVA 풀이 (0) | 2024.01.04 |
---|---|
[프로그래머스] 콜라츠 수열 만들기 (0) | 2023.11.23 |
프로그래머스 | 수열과 구간 쿼리 2 (2) | 2023.09.19 |
프로그래머스 | 수 조작하기 2 JAVA(자바) (0) | 2023.09.18 |
프로그래머스 | 수 조작하기1 JAVA(자바) (1) | 2023.09.17 |