정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e] 꼴입니다.
각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 arr[i]에 1을 더합니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
1 ≤ arr의 길이 ≤ 1,000
0 ≤ arr의 원소 ≤ 1,000,000
1 ≤ queries의 길이 ≤ 1,000
0 ≤ s ≤ e < arr의 길이
arr queries result [0, 1, 2, 3, 4] [[0, 1],[1, 2],[2, 3]] [1, 3, 4, 4, 4]
처음 봤을 때는 이해를 잘 못해서 이게 뭐지 싶었다.
그래서 일단 매우 노가다로 조건에 하나하나 대입해서 문제를 풀어봤다.
그랬더니 for문을 3중첩까지 했다. 코드 테스트를 하니 통과는 하는데
문제 제출을하니 전부 오답으로 나왔다.
뭔가 단단히 잘못한걸 느끼고 문제를 다시 천천히 처음부터 읽어봤다.
생각보다 단순했다. 결국 arr[s] ~ arr[e] 요소들에 1씩 더해주면 되는거였다.
function solution(arr, queries) {
queries.map((item) => {
for(let i = item[0]; i <= item[1]; i++){
arr[i]++;
}
})
return arr;
}
우선 map()메서드를 통해 queries의 요소를 받아오고 콜백함수로 for문을 전달, i의 시작값과 범위를 각각 queries요소의 0번과 1번 인덱스 즉 s,e로 설정해주면 된다.
풀고보면 복잡한게 아닌데 내가 괜히 복잡하게 생각해서 돌아갔다.
문제를 차분히 읽어보자
통과!