본문 바로가기
알고리즘 풀이/백준

[백준 16967] 배열 복원하기 (python)

by char_lie 2023. 3. 23.
반응형

https://www.acmicpc.net/problem/16967

 

16967번: 배열 복원하기

크기가 H × W인 배열 A와 두 정수 X와 Y가 있을 때, 크기가 (H + X) × (W + Y)인 배열 B는 배열 A와 배열 A를 아래로 X칸, 오른쪽으로 Y칸 이동시킨 배열을 겹쳐 만들 수 있다. 수가 겹쳐지면 수가 합쳐

www.acmicpc.net

배열 복원하기 문제

조건에 맞게 행렬을 복원하는 문제

조건 써있는 그대로 구현하면 쉽게 구현할 수 있는 문제

내가 푼 정답코드

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])

📌문제 접근 포인트

1. 행렬 A를 2개를 일부를 겹치게 만든 행렬이 행렬 B다.
2. 그렇다면, 애초부터 B 행렬에서 겹치는 부분만 B의 첫 줄부터 하나씩 빼줘나가면 B를 행렬 A 에 이상한 값이 섞이게 만들어줄 수 있다.
3. 여기서 B를 H,W 사이즈로 잘라버리면 완성!
반응형

댓글