์ฝ๋
#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()
ํจ์๋ฅผ ๊ฐ์ธ ์์์ขํ๋ฅผ ํ๋์ฉ ๋๋ ค๊ฐ์ผ๋ก์จ ๊ตฌํํ๋ค....... ์ด๋ ต๋ค ใ
ใ
.