https://www.acmicpc.net/problem/16967
[난이도] Silver3
[유형] 구현
[풀이]
두 배열의 겹치는 부분은 Bi,j = Ai,j + Ai-X,j-Y 와 같으므로
겹치는 부분의 A배열의 값은 A[i][j] = B[i][j] - A[i-X][j-Y] 의 식으로 구할 수 있습니다.
A[0][0] 부터 구하기 시작하면 A[i-X][j-Y]는 이미 구해져 있다는 것이 보장되기 때문에
위의 식에서 A[i-X][j-Y]이 없어서 못구하는 상황은 발생하지 않습니다.
#include <cstdio>
int H,W,X,Y,B[700][700],A[300][300];
int main(){
scanf("%d%d%d%d",&H,&W,&X,&Y);
for(int i=0;i<H+X;i++)
for(int j=0;j<W+Y;j++) scanf("%d",&B[i][j]);
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
if(i>=X && j>=Y) A[i][j] = B[i][j] - A[i-X][j-Y];
else A[i][j] = B[i][j];
printf("%d ",A[i][j]);
}
puts("");
}
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver3/16967.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold5] 17218 : 비밀번호 만들기 (C++) (0) | 2022.11.06 |
---|---|
[BOJ/백준][Gold4] 2253 : 점프 (C++) (0) | 2022.11.06 |
[BOJ/백준][Silver2] 2210 : 숫자판 점프 (C++) (0) | 2022.11.06 |
[BOJ/백준][Silver2] 15664 : N과 M (10) (C++) (0) | 2022.11.06 |
[BOJ/백준][Silver2] 1138 : 한 줄로 서기 (C++) (0) | 2022.11.06 |