https://www.acmicpc.net/problem/16507
로직
- 누적합 활용
- 누적합을 기록할 새로운 배열 생성
- 시작지점부터 해당 좌표까지의 사각형에 포함되는 모든 값들의 합을 기록
(arr[r][c] = arr[r-1][c] + arr[r][c-1] - arr[r-1][c-1] + data[r-1][c-1])
const solution = (R,C,Q,data)=>{
const command = data.slice(R);
const arr = Array.from({length:R+1},()=>Array.from({length:C+1}).fill(0));
const answer = [];
for (let r=1;r<=R;r++){
for (let c=1;c<=C;c++){
arr[r][c] = arr[r-1][c] + arr[r][c-1] -arr[r-1][c-1] + data[r-1][c-1]
}
}
for (const [r1,c1,r2,c2] of command){
const total = arr[r2][c2] - arr[r2][c1-1] - arr[r1-1][c2] + arr[r1-1][c1-1];
answer.push(Math.trunc(total/((r2-r1+1)*(c2-c1+1))))
}
return answer
}
const fs = require('fs');
const URI = process.platform === 'linux'?0:'./16507.txt';
const [[R,C,Q],...inputs] = fs.readFileSync(URI,'utf-8').toString().trim().split('\n').map(str=> {return str.split(' ').map(Number)});
const ans = solution(R,C,Q,inputs)
ans.forEach((value)=>console.log(value))
힘들었던 점
- 아직 javascript 메서드에 익숙하지 않아서 힘들었
'알고리즘 문제 풀이 > Javascript' 카테고리의 다른 글
[node.js] 백준 1309 동물원 (1) | 2025.01.17 |
---|---|
[node.js] 1347 미로만들기 (0) | 2025.01.15 |
[node.js] 1331 나이트투어 with Python (0) | 2025.01.13 |
Javascript(nodejs) 백준 1756 피자 굽기 (0) | 2024.06.03 |
javascript(nodeJS) 백준 14719 빗물 (0) | 2024.05.28 |