이 문제에 다시 도전했다.
이 코드들은 처음 구상한 코드다.
1. 빼주는 방식을 사용하거나
2. 빼는 계산없이 해당 자리에 맞는 숫자를 그냥 출력하는 방식을 사용했다.
#include <iostream>
using namespace std;
int main(){
//입력받기
int H, W, X, Y;
cin >> H >> W >> X >> Y;
int arr[H+X][W+Y];
for(int i=0; i<(H+X); i++){
for(int j=0; j<(W+Y); j++)
cin >> arr[i][j];
}
//겹치는 줄 전까진 그대로 출력
for(int i=0; i<(X); i++){
for(int j=0; j<(W); j++)
cout << arr[i][j] << " ";
cout << "\n";
}
//겹치는 줄 계산해 출력
for(int i=(X); i<(H); i++){
for(int j=0; j<(W); j++){
if( (i<X) || (j<Y) )
cout << arr[i][j] << " ";
else
cout << arr[i][j]-arr[][] << " ";
}
cout << "\n";
}
return 0;
}
#include <iostream>
using namespace std;
int main(){
//입력받기
int H, W, X, Y;
cin >> H >> W >> X >> Y;
int arr[H+X][W+Y];
for(int i=0; i<(H+X); i++){
for(int j=0; j<(W+Y); j++)
cin >> arr[i][j];
}
//겹치는 줄 전까진 그대로 출력
for(int i=0; i<(X); i++){
for(int j=0; j<(W); j++)
cout << arr[i][j] << " ";
cout << "\n";
}
//겹치는 이후 계산해 출력
for(int i=(H); i<(H+X); i++){
for(int j=(Y); j<(W+Y); j++)
cout << arr[i][j] << " ";
cout << "\n";
}
return 0;
}
최종 코드는 다음과 같다.
빼는 방식을 좀 더 생각해보았다.
빼야하는 영역은 위에서 잘 생각했다.
어떤 숫자를 빼야할지 생각해 더 생각해야 했다.
(빼야하는 밀린 숫자)에서 (이동되기 전에 있는 숫자)를 빼면 됐다.!
#include <iostream>
using namespace std;
int main(){
//입력받기
int H, W, X, Y;
cin >> H >> W >> X >> Y;
int arr[H+X][W+Y];
for(int i=0; i<(H+X); i++){
for(int j=0; j<(W+Y); j++)
cin >> arr[i][j];
}
//겹치는 부분 계산하기
for (int i = X; i < H; i++) {
for (int j = Y; j < W; j++) {
arr[i][j] -= arr[i - X][j - Y];
}
}
//출력
for (int i = 0; i < H; i++) {
for (int j = 0; j < W; j++) {
cout << arr[i][j] << " ";
}
cout << "\n";
}
return 0;
}
'백준' 카테고리의 다른 글
백준 13627 위험한 다이빙 c++ (0) | 2024.04.10 |
---|---|
백준 15059 Hard choice c++ (0) | 2024.04.09 |
백준 20922 겹치는 건 싫어 c++ (0) | 2024.04.07 |
백준 8979 올림픽 c++ (0) | 2024.04.06 |
백준 2075 N번째 큰 수 c++ (0) | 2024.04.05 |