Algorithm ๐ง๐ป๐ป/๋ฐฑ์ค(BOJ)
[๋ฐฑ์ค,c++] 4396๋ฒ - ์ง๋ขฐ ์ฐพ๊ธฐ
dkswnkk
2022. 3. 26. 19:03
๋ฌธ์
4396๋ฒ: ์ง๋ขฐ ์ฐพ๊ธฐ
์ฒซ ๋ฒ์งธ ์ค์๋ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์ n์ด ์ ๋ ฅ๋๋ค. ๋ค์ n๊ฐ์ ์ค์ ์ง๋ขฐ์ ์์น๋ฅผ ๋ํ๋ธ๋ค. ๊ฐ๊ฐ์ ์ค์ n๊ฐ์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ํ์ ๋ํ๋ธ๋ค. ์จ์ (.)์ ์ง๋ขฐ๊ฐ ์๋ ์ง์ ์ด๋ฉฐ ๋ณ
www.acmicpc.net
์ฝ๋
//14:03 ~ 14:16
#include <iostream>
using namespace std;
int N;
char map[11][11];
char inp[11][11];
char out[11][11];
int dx[8] = {0, 0, -1, 1, -1, -1, 1, 1}; //์, ํ, ์ข, ์ฐ, ์ผ์ชฝ ์, ์ผ์ชฝ ์๋, ์ค๋ฅธ์ชฝ ์, ์ค๋ฅธ์ชฝ ์๋
int dy[8] = {-1, 1, 0, 0, -1, 1, -1, 1};
int dfs(int x, int y, int cnt){
for(int i=0; i<8; i++){
int nx = x + dx[i];
int ny = y + dy[i];
if(nx>=0&&nx<N&&ny>=0&&ny<N){
if(map[nx][ny]=='*') cnt++;
}
}
return cnt;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
bool flag = false; //์ง๋ขฐ๋ฅผ ๋ฐ์๋์ง ์๋ฐ์๋์ง ํ์ธ
cin>>N;
for(int i=0; i<N; i++){
for(int k=0; k<N; k++){
cin>>map[i][k];
}
}
for(int i=0; i<N; i++){
for(int k=0; k<N; k++){
cin>>inp[i][k];
}
}
for(int i=0; i<N; i++){
for(int k=0; k<N; k++){
if(inp[i][k]=='x'){
int cnt = dfs(i,k,0);
out[i][k] = cnt+'0';
if(map[i][k]=='*') flag = true; // ์ง๋ขฐ๋ฅผ ๋ฐ์.
}
else if(inp[i][k]=='.') out[i][k] = '.';
}
}
if(flag){
for(int i=0; i<N; i++){
for(int k=0; k<N; k++){
if(map[i][k]=='*') out[i][k]='*';
}
}
}
for(int i=0; i<N; i++){
for(int k=0; k<N; k++){
cout<<out[i][k];
}
cout<<'\n';
}
}
ํ์ด
๋จ์ํ ๊ตฌํ ๋ฌธ์ ์์ต๋๋ค. ์ํ์ข์ฐ ๋๊ฐ์ ์ ์ง๋ขฐ๊ฐ ์๋ค๋ฉด ๊ทธ๋งํผ ๊ฐ์๋ฅผ ์ธ์ฃผ์ด ํ์ฌ ํ์๋ค๊ฐ ๊ฐ์๋ฅผ ํ๊ธฐํด ์ฃผ์๊ณ , ํน์๋ผ๋ ์ง๋ขฐ๊ฐ ์ด๋ ธ๋ค๋ฉด ๋ชจ๋ ์ง๋ขฐ ๊ตฌ๊ฐ์ ์คํํด์ผ ํ๊ธฐ์ ์ง๋ขฐ๊ฐ ์๋ ๊ตฌ๊ฐ์ ๋ชจ๋ '*'๋ก ๋ฐ๊พธ์ด ์ฃผ๋ ์์ผ๋ก ๊ตฌํํ์ต๋๋ค.