배열 복원하기 16967

PublicMinsu·2023년 1월 11일
0

문제

접근 방법

X, Y만큼 이동한 뒤에 더했다는 건 다시 X, Y만큼 이동한 뒤에 빼주면 된다는 것이다.

코드

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int H, W, X, Y;
    cin >> H >> W >> X >> Y;
    vector<vector<int>> vec(H + X, vector<int>(W + Y));
    for (int i = 0; i < H + X; ++i)
        for (int j = 0; j < W + Y; ++j)
        {
            int k;
            cin >> k;
            vec[i][j] = k;
        }
    for (int i = 0; i < H; ++i)
    {
        for (int j = 0; j < W; ++j)
        {
            cout << vec[i][j] << " ";
            vec[i + X][j + Y] -= vec[i][j];
        }
        cout << "\n";
    }
    return 0;
}

풀이


사실 H, W만큼의 크기만 있어도 된다. 입력을 버리는 과정, 빼는 과정에서 범위를 처리하는 게 귀찮아서 H+X, W+Y만큼의 크기를 선언하여 풀었다.
딱히 메모리, 시간을 생각하고 작성한 건 아니지만 혹시나 하는 마음에 순위를 찾아봤다. 난이도, 인원수를 생각하면 지난번보다는 임팩트가 적지만 그래도 만족스럽다. '좀 더 메모리를 생각하고 작성했다면 더 높은 순위를 얻을 수 있지 않았을까?' 싶기도 하다.

profile
연락 : publicminsu@naver.com

0개의 댓글