배열 B는 배열 A와 배열 A를 아래로 X칸 오른쪽으로 Y칸 이동시킨 배열을 겹쳐서 만든 것이다. 수가 겹쳐지면 수가 합쳐진다.
이 때, 우리가 해야할 일은 배열 B를 이용하여 배열 A로 복원하는 것이다.
일단 겹쳤는지, 겹치지 않았는지의 여부가 중요하다. 만약 겹치지 않았으면 해당 위치에 있는 배열 B 값을 배열 A, 해당 위치에 넣으면된다. 만약 겹쳤으면, 현재 위치 (i, j)에 대해,
B[i][j]-A[i-x][j-x]
으로 나온 값을 배열A[i][j]
에 할당한다.
import sys
h, w, x, y = map(int, sys.stdin.readline().rstrip().split())
arr = [list(map(int, sys.stdin.readline().rstrip().split())) for _ in range(h+x)]
def solve():
recovered_arr = [[0 for _ in range(w)] for _ in range(h)]
check = [[0 for _ in range(w)] for _ in range(h)]
for i in range(h):
for j in range(w):
if i < h and j < w: check[i][j] += 1
if i+x < h and j+y < w: check[i+x][j+y] += 1
for i in range(h):
for j in range(w):
if check[i][j] == 1: recovered_arr[i][j] = arr[i][j]
elif check[i][j] == 2:
recovered_arr[i][j] = arr[i][j] - recovered_arr[i-x][j-y]
for i in range(h):
for j in range(w):
print(recovered_arr[i][j], end=' ')
print()
solve()