const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().split('\n');
/**
* H: A의 세로, W: A의 가로, X: 밑으로 움직인 칸 수, Y: 오른쪽으로 움직인 칸 수
*/
const [H, W, X, Y] = input.shift().split(' ').map(Number);
const A = Array.from({ length: H }, () => Array.from({ length: W }));
const B = input.map(row => row.split(' ').map(Number));
const solution = () => {
// 겹친부분에 더해진 만큼 빼준다.
// 밑으로 X, 오른쪽으로 Y만큼 움직여서 겹친부분을 더해줬기 때문에,
// 위로 X, 왼쪽으로 Y만큼 갔을 때 있는 요소만큼 빼주면 원래 값이 나온다.
for(let i=X; i<H; i++) {
for(let j=Y; j<W; j++) {
B[i][j] -= B[i-X][j-Y];
}
}
// A의 크기에 맞는 만큼 B를 복사한다.
for(let i=0; i<H; i++) {
for(let j=0; j<W; j++) {
A[i][j] = B[i][j];
}
}
A.forEach((row) => {
console.log(row.join(' '));
});
};
solution();
'PS > 백준' 카테고리의 다른 글
백준 / 백트래킹 / 18428번 / 감시 피하기 / JS (2) | 2023.12.12 |
---|---|
백준 / 그래프 / 17086번 / 아기 상어 2 / JS (0) | 2023.12.11 |
백준 / 백트래킹 / 18429번 / 근손실 / JS (2) | 2023.12.07 |
백준 / 그래프 / 1189번 / 컴백홈 / JS (0) | 2023.12.05 |