안녕하세요. 오늘은 ㄱ 나이트 게임을 할 거예요.

문제

https://www.acmicpc.net/problem/31459

아이디어

그냥 (1,1)부터 (X,Y)까지 그리디로 풀면 됩니다.
그 칸이 가능한지 여부는 (i-x,j-y)칸에 있는지 없는지만 확인해주면 됩니다.

소스코드

#include <iostream>
#define ll long long
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll T;
    cin >> T;
    while (T--)
    {
        ll X, Y, x, y, map[55][55] = { 0 }, cnt = 0;

        cin >> X >> Y >> x>> y;
        for (ll i = 1; i <= X; i++)
        {
            for (ll j = 1; j <= Y; j++)
            {
                if (i - x >= 1 && j - y >= 1 && map[i - x][j - y] == 1) //불가능
                    continue;
                map[i][j] = 1;
                cnt++;
            }
        }

        cout << cnt << "\n";
    }
}


감사합니다.

0개의 댓글