백준

백준 16967 배열 복원하기 c++

2024. 4. 8. 23:01

 

 

 

이 문제에 다시 도전했다.

이 코드들은 처음 구상한 코드다.

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