문제:https://www.acmicpc.net/problem/16956
1)문제분류
-구현
2)문제 해결
- 주의해야할점은 설치해야하는 울타리의 최소의 값이 아니다.!!
- 그래서 양과 늑대가 만나지 않게 울타리만 설치하면 된다.
- 즉, 양과 늑대가 인접해있다면 울타리를 설치할 수 없기때문에 0을 출력해야하는 것이고
- 양과 늑대가 모두 인접해있지 않다면,1을 출력하고 그 사이에 울타리를 모두 설치하면 된다!
//5시.
#include<iostream>
using namespace std;
int xrr[4] = { 0,0,1,-1 };
int yrr[4] = { 1,-1,0,0 };
char map[502][502];
int r, c;
int search(int x, int y)
{
for (int i = 0; i < 4; i++)
{
int curx = x + xrr[i];
int cury = y + yrr[i];
if (0 <= curx&&curx <= r && 0 <= cury&&cury <= c&&map[curx][cury]=='W')
{
return 1;
}
}
return 0;
}
int main()
{
cin >> r >> c;
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
cin >> map[i][j];
}
}
int ok = 0;
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
if (map[i][j] == 'S') //주위에 늑대있는지 확인
{
ok+=search(i, j);
}
}
}
if (ok == 0)
{
cout << 1 << endl;
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
if (map[i][j] == '.')
{
cout << 'D';
}
else
cout << map[i][j];
}
cout << endl;
}
}
else
{
cout << 0 << endl;
}
}
'알고리즘문제풀이' 카테고리의 다른 글
[백준 16957]체스판 위의 공 (0) | 2019.02.20 |
---|---|
[백준 16955]오목, 이길 수 있을까? (0) | 2019.02.19 |
[백준 1173]운동 (0) | 2019.02.19 |
[백준 3109]빵집 (0) | 2019.02.19 |
[백준 1389]케빈 베이컨의 6단계 법칙 (0) | 2019.02.19 |