본문 바로가기

알고리즘문제풀이

[백준 16956]늑대와 양

반응형

문제: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