오답노트
[시뮬레이션] BOJ 16967번 배열 복원하기 본문
https://www.acmicpc.net/problem/16967
16967번: 배열 복원하기
크기가 H × W인 배열 A와 두 정수 X와 Y가 있을 때, 크기가 (H + X) × (W + Y)인 배열 B는 배열 A와 배열 A를 아래로 X칸, 오른쪽으로 Y칸 이동시킨 배열을 겹쳐 만들 수 있다. 수가 겹쳐지면 수가 합쳐
www.acmicpc.net
- 문제 파악
배열 A의 크기 H와 W 그리고 배열 A 와 배열 A를 오른쪽으로 X 칸, 아래로 Y 칸 움직인 배열 B 합친 H+X x W+Y 배열C를 입력 받는데 입력 받은 배열로 부터 배열 A를 출력하라
- 정답
C[i][j]에서 i 가 0이고 j 가 0부터 w-1 까지는 배열 A와 같다.
그러므로 i가 1일때 부터 A[i][j] = C[i][j] - A[i-x][j-y] 이다.
그리고 겹치지 않는 부분은 예외 처리한다.
#include "bits/stdc++.h"
using namespace std;
int arr[603][603];
int arr_src[301][301];
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
fill(arr_ans[0], arr_ans[0] + (301 * 301), -1);
int h, w, x, y;
cin >> h >> w >> x >> y;
for (int i = 0; i < h + x; i++)
{
for (int j = 0; j < w + y; j++)
{
cin >> arr[i][j];
}
}
memcpy(arr_src[0], arr[0], sizeof(int) * w);
for (int i = 1; i < h; i++)
{
for (int j = 0; j < w; j++)
{
if (j < y)
arr_src[i][j] = arr[i][j];
else
arr_src[i][j] = arr[i][j] - arr_src[i - x][j - y];
}
}
for (int i = 0; i < h; i++)
{
for (int j = 0; j < w; j++)
cout << arr_src[i][j] << " ";
cout << "\n";
}
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
프로그래머스 1단계 - 문자열 다루기 (0) | 2022.05.26 |
---|---|
프로그래머스 1단계 - 소수 찾기 (0) | 2022.05.26 |
[시뮬레이션] BOJ 16931번 겉넓이 구하기 (0) | 2022.05.26 |
[시뮬레이션] BOJ 16927 배열 돌리기 2 - 오답노트 (0) | 2022.05.26 |
[시뮬레이션] BOJ 16926번 배열 돌리기 1 (0) | 2022.05.25 |