[18808๐Ÿ‘] ์Šคํ‹ฐ์ปค ๋ถ™์ด๊ธฐ

!ยท2022๋…„ 7์›” 20์ผ
0

์ฝ”๋“œ

#include <iostream>
#include <utility>
using namespace std;
int n,m,k;
int r,c;
int field[42][42];
int sticker[12][12];
int ans;

bool paste(int x,int y)
{
    for(int i =0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            if(field[x+i][y+i] == 1 && sticker[i][j] == 1)
                return false;
        }
    }
    for(int i = 0;i<r;i++)
    {
        for(int j =0;j<c;j++)
        {
            if(sticker[i][j] == 1)
            {
                field[x+i][y+i] = 1;
            }
        }
    }
    return true;
}

void rotate()
{
    int tmp[12][12];
    for(int i = 0;i<r;i++)
    {
        for(int j = 0;j<c;j++)
        {
            tmp[i][j] = sticker[i][j];
        }
    }
    for(int i =0;i<c;i++)
    {
        for(int j = 0;j<r;j++)
        {
            sticker[i][j] = tmp[r-1-j][i];
        }
    }
    swap(r,c);
}

int main(void)
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m >> k;
    while(k--)
    {
        cin >> r >> c;
        for(int i = 0;i<r;i++)
        {
            for(int j = 0;j<c;j++)
            {
                cin >> sticker[i][j];
            }
        }
        for(int rot = 0;rot<4;rot++)
        {
            bool suc = false;
            for(int x = 0;x<=n-r;x++)
            {
                for(int y = 0;y<=m-c;y++)
                {
                    if(paste(x,y))
                    {
                        suc = true;
                        break;
                    }
                }
                if(suc) break;
            }
            if(suc) break;
            rotate();
        }
    }
    for(int i = 0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            ans += field[i][j];
        }
    }
    cout << ans;
    return 0;
    
}
  • ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ์ด๋‹ค. ์–ด๋Š ๋ถ€๋ถ„์—์„œ ๋ง‰ํ˜”๋Š”๊ฐ€..
  • ์ฒซ๋ฒˆ์งธ๋Š” ์Šคํ‹ฐ์ปค์˜ ํšŒ์ „ ์ด๋‹ค. ๊ต‰์žฅํžˆ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ.. ์ƒ๊ฐ๋ณด๋‹ค ์‰ฌ์› ๋‹ค. ์—ฐ์—ญ์ ์œผ๋กœ ํ•ด๋ณด๊ธฐ ๋ณด๋‹ค๋Š”, ๊ทœ์น™์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๋Š” ๊ฒƒ ๋„ ๋งค์šฐ ์ข‹์€ ๋ฐฉ๋ฒ•์ธ ๊ฒƒ ๊ฐ™๋‹ค..
  • ๋‘๋ฒˆ์งธ๋Š” ์Šคํ‹ฐ์ปค์˜ ์ด๋™์ด๋‹ค. ๊ณผ์—ฐ ์–ด๋–ป๊ฒŒ ์Šคํ‹ฐ์ปค์˜ ์ด๋™์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋งŽ์ด ํ—ท๊ฐˆ๋ ธ๋‹ค.. rotate() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์Šคํ‹ฐ์ปค์˜ ์‹œ์ž‘ ์ขŒํ‘œ๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ณ  ํ˜ธ์ถœํ•˜๋Š” ์œ„์น˜์—์„œ for ๋ฌธ ์•ˆ์— rotate() ํ•จ์ˆ˜๋ฅผ ๊ฐ์‹ธ ์‹œ์ž‘์ขŒํ‘œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋Š˜๋ ค๊ฐ์œผ๋กœ์จ ๊ตฌํ˜„ํ–ˆ๋‹ค....... ์–ด๋ ต๋‹ค ใ… ใ… .
profile
๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ

0๊ฐœ์˜ ๋Œ“๊ธ€