[백준/Python] 16967번 - 배열 복원하기

Sujin Lee·2022년 6월 2일
0

코딩테스트

목록 보기
58/172
post-thumbnail

문제

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

# 배열 B
for i in range(h+x):
  B_array[i] = list(map(int,sys.stdin.readline().split()))

# 배열 A 초기화
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("")
profile
공부한 내용을 기록하는 공간입니다. 📝

0개의 댓글