정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 arr[i]에 1을 더합니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
function solution(arr, queries) {
for(let i=0; i<queries.length; i++){
let [s,e] = queries[i];
for(let j=0; j<=e; j++){
if(j>=s && j<=e){
arr[j]++;
}
}
}
return arr;
}
=> 처음에 문제에서 제시한 i를 인덱스라고 착각했다. 인덱스가 아니라면 굳이 조건을 넣을 필요가 없는 것 같다. query인 [s,e]에서 arr[s]~arr[e]요소에 더하기 1씩해주면 되는 문제였다. 복잡하게 푼 것 같다. 문제를 제대로 이해하고 다시 풀어봤다.
function solution(arr, queries) {
queries.map(x=>{
for(i=x[0]; i<=x[1]; i++){
arr[i]++;
}
})
return arr;
}
function solution(arr, queries) {
queries.forEach(([s, e]) => {
while (s <= e) arr[s++]++;
});
return arr;
}
=> for문이 아닌 while문으로 반복문을 사용하였다.
function solution(arr, q) {
q.map((a)=>{
for(let i = a[0]; i<=a[1]; i++){
arr[i]+=1;
}
})
return arr;
}
=> 다시 풀어본 나의 방식과 같은 풀이였다.
문제를 제대로 이해하고 풀어야할 것 같다.