문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
메모
- 0은 0을 제외한 모든 정수의 배수이다.
- 반복문에서
arr[x]++
를 사용하면 원본 배열의 해당 값이 바뀐다.
// 예시의 arr는 다음과 같이 바뀐다
// [0, 1, 2, 4, 3] + 1, 1, 1, 1, 1
// [1, 2, 3, 5, 4] + 1, 0, 1, 0, 0
// [2, 2, 4, 5, 4] + 1, 0, 0, 1, 0
// [3, 2, 4, 6, 4]
let arr = [0, 1, 2, 3];
arr.forEach((x, i) => {
if (i % 2 === 0) arr[i]++;
});
console.log(arr);
// arr is [ 1, 1, 3, 3 ];
정답
function solution(arr, queries) {
queries.forEach(x => {
// quries의 값을 순서대로 s, e, k로 구조 분해 할당한다
const [s, e, k] = x;
// 배열 i를 만든다
// 0 을 포함해야 하므로 e에서 s를 뺀 값에서 1을 더한다
const i = Array(e - s + 1)
.fill(s)
.map((a, b) => a + b);
// 배열 i에서 각각의 요소 x에 대해 반복문을 돌린다
// x가 k의 배수라면 arr[x]에 1을 더한다
i.forEach(x => {
if (x % k === 0) {
arr[x]++;
}
});
});
return arr;
}