[Silver III] Title: 배열 복원하기, Time: 108 ms, Memory: 39516 KB -BaekjoonHub

This commit is contained in:
SSUM
2026-01-12 21:56:56 +09:00
parent 02c061f101
commit cb83d4bd2b
2 changed files with 48 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
# [Silver III] 배열 복원하기 - 16967
[문제 링크](https://www.acmicpc.net/problem/16967)
### 성능 요약
메모리: 39516 KB, 시간: 108 ms
### 분류
구현
### 제출 일자
2026년 1월 12일 21:56:31
### 문제 설명
<p>크기가 H × W인 배열 A와 두 정수 X와 Y가 있을 때, 크기가 (H + X) × (W + Y)인 배열 B는 배열 A와 배열 A를 아래로 X칸, 오른쪽으로 Y칸 이동시킨 배열을 겹쳐 만들 수 있다. 수가 겹쳐지면 수가 합쳐진다.</p>
<p>즉, 배열 B의 (i, j)에 들어있는 값은 아래 3개 중 하나이다.</p>
<ul>
<li>(i, j)가 두 배열 모두에 포함되지 않으면, B<sub>i,j</sub> = 0이다.</li>
<li>(i, j)가 두 배열 모두에 포함되면, B<sub>i,j</sub> = A<sub>i,j</sub> + A<sub>i-X,j-Y</sub>이다.</li>
<li>(i, j)가 두 배열 중 하나에 포함되면, B<sub>i,j</sub> = A<sub>i,j</sub> 또는 A<sub>i-X,j-Y</sub>이다.</li>
</ul>
<p>배열 B와 정수 X, Y가 주어졌을 때, 배열 A를 구해보자.</p>
### 입력
<p>첫째 줄에 네 정수 H, W, X, Y가 주어진다. 둘째 줄부터 H + X개의 줄에 배열 B의 원소가 주어진다.</p>
<p>항상 배열 A가 존재하는 경우만 입력으로 주어진다.</p>
### 출력
<p>총 H개의 줄에 배열 A의 원소를 출력한다.</p>

View File

@@ -0,0 +1,8 @@
import sys
H, W, X, Y = map(int, sys.stdin.readline().strip().split())
B = [list(map(int, sys.stdin.readline().strip().split())) for _ in range(H+X)]
for i in range(X,H):
for j in range(Y,W):
B[i][j] = B[i][j] - B[i-X][j-Y]
for result in B[:H] :
print(*result[:W])