문제
16967번 - 배열 복원하기
문제 해결 과정
- 배열B를 보고 배열A를 구해야함
- 배열A를 아래로 X칸, 오른쪽으로 Y칸 이동시키면, 가장 왼쪽이자 가장 위쪽은 비어지고 배열A는 가장 오른쪽이자 가장 아래쪽으로 이동한다.
- 배열A와 아래로 X칸, 오른쪽으로 Y칸 이동한 배열A로 배열B를 만든다.
- 우선 배열A을 배열B로 채운다.
- 겹치는 부분은 값을 바꾼다.
- 배열A
[x][y]
부터 겹친다는 것을 알아내야 함
시행착오
- 문제를 제대로 안읽고 내가 이해한 방법대로 구현했음 문제를 제대로 읽자
(i, j)가 두 배열 모두에 포함되면, Bi,j = Ai,j + Ai-X,j-Y이다.
해당 부분 구현이 잘못됨
A_array[i][j] = B_array[i][j] - A_array[i-x][j-y]
import sys
h,w,x,y = list(map(int,sys.stdin.readline().split()))
B_array = [ 0*(w+y) for _ in range(h+x)]
for i in range(h+x):
B_array[i] = list(map(int,sys.stdin.readline().split()))
A_array = [[0]*w for _ in range(h)]
for i in range(h):
for j in range(w):
A_array[i][j] = B_array[i][j]
for i in range(x,h):
for j in range(y,w):
A_array[i][j] = B_array[i][j] - A_array[i-x][j-y]
for i in range(h):
for j in range(w):
print(A_array[i][j],end=" ")
print("")