문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
메모
정답 1의 while문에서 arr[s++]++
잘 봐두자.
정답
// forEach문으로 queries의 값을 [s, e]로 구조 분해 할당
// s가 e와 같아질 때까지 while문을 반복한다
// 반복할 때마다 arr[s++]에 해당하는 값을 1씩 더한다(++)
// 이렇게 하면 모든 s의 값 === arr의 인덱스, 가 되고 해당 값을 1씩 더하게 된다
function solution(arr, queries) {
queries.forEach(([s, e]) => {
while (s <= e) arr[s++]++;
});
return arr;
}
function solution(arr, queries) {
const newQueries = [...queries].map(([a, b]) => {
return Array(b - a + 1)
.fill(a)
.map((a, b) => a + b);
});
for (let i = 0; i < newQueries.length; i++) {
for (let j = 0; j < newQueries[i].length; j++) {
if (i >= newQueries[i][j] || i <= newQueries[i][j]) {
arr[newQueries[i][j]]++;
}
}
}
return arr;
}