daniel7481의 개발일지

[BOJ]16967 배열 복원하기 본문

BOJ

[BOJ]16967 배열 복원하기

daniel7481 2022. 7. 6. 22:27
반응형

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

 

16967번: 배열 복원하기

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

www.acmicpc.net

풀이

★직접 코테 광탈하면서 모은 문제들☆ danimartinwife

 

danimartinwife 정보

맞았지만 만점을 받지 못한 문제

www.acmicpc.net

이 분이 만들어주신 문제집을 풀고 있다. 정말 감사하게도 문제를 모아주셔서 열심히 풀고 있다. 물론 골드 상위권과 플레 문제는 엄두도 못내고 있지만, 내가 할 수 있는 것부터 할려고 한다. 이번 문제는 간단한 구현 문제였다. 처음에는 겹치는 부분을 생각하지 않고 겹치지  않는 부분에서 A 배열의 모든 원소를 찾을 수 있다고 생각하고, 틀렸습니다를 받았다. 다음 생각한 것은 먼저 x와 y는 1보다 크기 때문에, x행과 y열은 A 배열 본연의 원소가 맞다. 일단 전부 A에 할당해주자. 다음 그냥 순차적으로 x부터 h, y부터 w까지 탐색해주면서 B배열의 인덱스 (i, j)의 값에서 A배열의 인덱스 (i-x, j-y)의 값을 빼주면 A[i][j[의 값이 된다.

import sys
input = lambda: sys.stdin.readline().rstrip()
h, w, x, y = map(int, input().split())
B = [list(map(int, input().split())) for _ in range(h+x)]
A = [[0 for _ in range(w)]for _ in range(h)]
for i in range(x):
    for j in range(w):
        A[i][j] = B[i][j]
for i in range(h):
    for j in range(y):
        A[i][j] = B[i][j]
for i in range(x, h):
    for j in range(y,w):
        A[i][j] = B[i][j] - A[i-x][j-y]
for i in range(h):
    for j in range(w):
        print(A[i][j], end = ' ')
    print()
반응형

'BOJ' 카테고리의 다른 글

[BOJ]1918 후위 표기식  (0) 2022.07.08
[BOJ]8972 미친 아두이노  (0) 2022.07.08
[BOJ]16918 봄버맨  (0) 2022.07.06
[BOJ]15591 MooTube(Silver)  (0) 2022.07.03
[BOJ]1743 음식물 피하기  (0) 2022.06.28