-
백준 16967번 배열 복원하기PS 2020. 2. 11. 22:06
https://www.acmicpc.net/problem/16967
<접근방법>
단순 구현문제입니다.
문제에 나와있는 대로 구현하면 됩니다.
method1은 틀렸는데 왜 틀렸는지 모르겠습니다..
<코드>
#include <iostream> #include <algorithm> using namespace std; int n, m, y, x; int B[601][601]; int not_A[601][601]; int A[301][301]; //불합격 void method1() { for (int i = y; i < n; i++) { for (int j = x; j < m; j++) { not_A[i][j] = 1; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (not_A[i][j] == 0) { A[i][j] = B[i][j]; } } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (not_A[i + y][j + x] == 0) { A[i][j] = B[i + y][j + x]; } } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << A[i][j] << ' '; } puts(""); } } //합격 void method2() { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (y <= i && i <= n && x <= j && j <= m) { A[i][j] = B[i][j] - A[i - y][j - x]; } else { A[i][j] = B[i][j]; } } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << A[i][j] << ' '; } puts(""); } } //개선 void method3() { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (i >= y && j >= x) { B[i][j] -= B[i-y][j-x]; } } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << B[i][j] << ' '; } puts(""); } } int main() { cin >> n >> m >> y >> x; for (int i = 0; i < n + y; i++) { for (int j = 0; j < m + x; j++) { cin >> B[i][j]; } } method3(); return 0; }
<느낀 점>
-쉬운 방법은 얼마든지 있다
'PS' 카테고리의 다른 글
백준 17136번 색종이 붙이기 (0) 2020.02.12 백준 18111번 마인크래프트 (0) 2020.02.11 백준 17135번 캐슬 디펜스 (0) 2020.02.10 백준 16954번 움직이는 미로 탈출 (0) 2020.02.10 백준 16918번 봄버맨 (0) 2020.02.09