문제 링크
https://www.acmicpc.net/problem/16967
문제 내용
크기가 H × W인 배열 A와 두 정수 X와 Y가 있을 때, 크기가 (H + X) × (W + Y)인 배열 B는 배열 A와 배열 A를 아래로 X칸, 오른쪽으로 Y칸 이동시킨 배열을 겹쳐 만들 수 있다. 수가 겹쳐지면 수가 합쳐진다.
즉, 배열 B의 (i, j)에 들어있는 값은 아래 3개 중 하나이다.
- (i, j)가 두 배열 모두에 포함되지 않으면, B(i,j) = 0이다.
- (i, j)가 두 배열 모두에 포함되면, B(i,j) = A(i,j) + A(i-X,j-Y)이다.
- (i, j)가 두 배열 중 하나에 포함되면, B(i,j) = A(i,j) 또는 A(i-X,j-Y)이다.
배열 B와 정수 X, Y가 주어졌을 때, 배열 A를 구해보자.
입력
첫째 줄에 네 정수 H, W, X, Y가 주어진다. 둘째 줄부터 H + X개의 줄에 배열 B의 원소가 주어진다.
항상 배열 A가 존재하는 경우만 입력으로 주어진다.
출력
총 H개의 줄에 배열 A의 원소를 출력한다.
IDEA
배열이 무조건 겹치기 때문에 겹치는 부분, 즉 (H+X)와 (W+Y) 사이의 부분만 연산해주고 나머지는 B와 같다.
CODE
h, w ,x ,y = map(int,input().split())
b = []
a = [[0] * w for _ in range(h) ]
for _ in range(h+x):
b.append(list(map(int,input().split())))
for i in range(h):
for j in range(w):
if i >= x and j >= y:
a[i][j] = b[i][j] - a[i-x][j-y]
else:
a[i][j] = b[i][j]
for i in a:
print(*i)
사용 알고리즘
구현 문제
풀이 평
쉽게 풀었다.
'🤔 알고리즘 > 시즌1-4주차-21.08.23~08.29' 카테고리의 다른 글
[백준] # 1937. 욕심쟁이 판다 (파이썬) (0) | 2021.08.31 |
---|---|
[백준] # 15900. 나무 탈출 (파이썬) (0) | 2021.08.31 |
[백준] # 1268. 임시 반장 정하기 (파이썬) (0) | 2021.08.31 |