백준

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

2024. 2. 22. 20:38

 

 

작성한 코드는 다음과 같다.

#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];
        }
    }
    
    int n = 0;
    for(int i=0; i<(H+X)/2; i++) {
        for(int j=0; j<(W+Y); j++) {
            if(arr[i][j] != 0) {
                cout << arr[i][j] << " ";
                n++;
            }
        }
        cout << "\n";
    }    
  
    int num = 0;
    for(int i=0; i<(W+Y-1); i++) {
        if((W+Y)-n <= i) {
            cout << arr[(H+X)/2][i] - arr[0][num] << " ";   
            num++;
        }  
        else
            cout << arr[(H+X)/2][i] << " ";
    }
    
    return 0;
}

기본으로 제공되는 예제는 맞게 출력했지만, 결과는 틀렸습니다가 나왔다.

 

 

 

수정한 코드는 다음과 같다.

생각해보니 X만큼 Y만큼 이동하는 거기때문에 for문의 조건을 그에 맞게 조금 바꿔주어야 했다.

#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];
        }
    }
    
    int n = 0;
    for(int i=0; i<X; i++) {
        for(int j=0; j<W; j++) {
            cout << arr[i][j] << " ";
            n++;
        }
        cout << "\n";
    }    
  
    int num = 0;
    for(int i=X; i<H; i++) {
        for(int j=0; j<W; j++) {
            if(j < Y) {
                cout << arr[i][j] << " ";
            }  
            else {
                cout << arr[i][j] - arr[0][num] << " ";   
                num++;                
            }
        }
    }
    
    return 0;
}

이 코드도 역시 틀렸다는 결과가 나왔다.

다른 코드들을 보니까 거의 비슷한데 뭔가 어딘선가 논리에 오류가 있는 듯 하다...

 

 

 

 

 

'백준' 카테고리의 다른 글

백준 2606 바이러스, c++  (0) 2024.02.25
백준 2644 촌수계산, c++  (0) 2024.02.23
백준 5054 주차의 신, c++  (0) 2024.02.22
백준 2023 신기한 소수, c++  (0) 2024.02.18
백준 2229번: 조 짜기, c++  (0) 2024.02.17