일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 재테크/투자
- LeetCode
- 알고리즘
- network
- SW Expert Academy
- 운영체제
- 문제풀이
- language
- OS
- Programmers
- BOJ
- 자료구조
- Database
- db
- swea
- data structure
- 법의학
- 네트워크
- cs
- 감상문
- 프로그래머스
- D3
- 독서
- 백준
- c++
- D2
- Computer Science
- algorithm
- 데이터베이스
- algogritim
Archives
- Today
- Total
선택은 나의 것
[BOJ 백준] 16967번 배열 복원하기 본문
문제
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
접근
H x W 크기의 배열 A를 X, Y만큼 움직여서 그 값을 더해 만든 배열 B가 있다. H, W, X, Y의 값과 배열 B가 주어졌을 때 원래의 배열 A를 구하는 문제이다.
위와 같이 그림을 그려보면 규칙이 보인다. 겹쳐지는 사각형이 처음으로 등장하는 좌표를 (i, j)라고 했을 때 배열 A에서의 이 위치의 원래 값과 좌표 (i - x, j - y)의 값이 합쳐진 모양새다. 따라서 (i, j)의 값 - (i - x, j - y)의 값을 해주면 사각형이 겹쳐지는 부분의 값을 쉽게 구할 수 있다.
코드
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int h, w, x, y, t, num[305][305];
cin >> h >> w >> x >> y;
for (int i = 0; i < h + x; i++) {
for (int j = 0; j < w + y; j++) {
cin >> t;
if (i < h && j < w)
num[i][j] = t;
}
}
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
if (i >= x && j >= y)
num[i][j] -= num[i - x][j - y];
cout << num[i][j] << " ";
}
cout << "\n";
}
return 0;
}
'☽ Algorithm > BOJ' 카테고리의 다른 글
[BOJ 백준] 2174번 로봇 시뮬레이션 (0) | 2021.12.14 |
---|---|
[BOJ 백준] 14466번 소가 길을 건너간 이유 6 (0) | 2021.12.11 |
[BOJ 백준] 17780번 새로운 게임 (0) | 2021.12.08 |
[BOJ 백준] 15591번 MooTube (Silver) (0) | 2021.12.07 |
[BOJ 백준] 1874번 스택 수열 (0) | 2021.12.06 |
Comments