- ์ด ๋ฌธ์ ๋ c++๋ก ํ์ด๋ฅผ ์์ฑํ์์ต๋๋ค.
๋ฌธ์
์์
ํ์ด
#include<iostream>
#include<vector>
using namespace std;
// ์ฐ, ์, ์ข, ํ
int dir[4][2]={{0,1},{-1,0},{0,-1},{1,0}};
int n;
// map์ 1์ด ํ์๋ ๋ถ๋ถ์ ํ์ธํ์ฌ ์ฌ๊ฐํ์ ์ด๋ฃฌ๋ค๋ฉด answer+1
bool map[101][101]={0};
int main(){
int answer=0;
cin>>n;
for(int i=0;i<n;i++){
int x,y,d,g;
cin>>x>>y>>d>>g;
vector<int> v; // ๋ฐฉํฅ์ ๋ด์ ๋ฒกํฐ
v.push_back(d); // 0์ธ๋ ๋ฐฉํฅ
// ํ ์ ์ ๊ธฐ์ค์ผ๋ก ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ๋ค๋ ๊ฒ์
// ํ์ ์ ๊ฐ ๋ฐฉํฅ์ ์๊ณ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ฉด ๋๋ค
for(int j=1;j<=g;j++){
int len=v.size();
for(int k=len-1;k>=0;k--){
int p=(v[k]+1)%4; // dir๋ฅผ ์๊ณ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๊ตฌํํ์์ผ๋ฏ๋ก +1์ ํด์ฃผ๋ฉด ๋๋ค
v.push_back(p);
}
}
// ํ์ฌ ์ขํ true ํ์
map[y][x]=1;
for(int j=0;j<v.size();j++){ // ๋ฐฉํฅ์ ๋ด์ ๋ฒกํฐ๋งํผ ์ขํ๊ฐ ์์ง์ฌ์ true ํ์
y+=dir[v[j]][0];
x+=dir[v[j]][1];
map[y][x]=1;
}
}
// map์์ ์ฌ๊ฐํ์ ์ด๋ฃฌ๋ค๋ฉด +1
for(int i=0;i<100;i++){
for(int j=0;j<100;j++){
if(map[i][j] && map[i+1][j] && map[i][j+1] && map[i+1][j+1]){
answer++;
}
}
}
cout<<answer;
}
- ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.