3187. ์์น๊ธฐ ๊ฟ
by rlaehddnd0422https://www.acmicpc.net/problem/3187
์์
1. ์ธํ๋ฆฌ๋ #, ์์ k, ๋๋๋ v
2. ์ธํ๋ฆฌ ๋ด๋ถ์ ์์ ์๊ฐ ๋๋์ ์๋ณด๋ค ๋ง์ผ๋ฉด ๋๋๊ฐ ๋ชจ๋ ์ก์๋จนํ๋ค.
3. ์ธํ๋ฆฌ ๋ด๋ถ์ ๋๋์ ์๊ฐ ์์ ์๋ณด๋ค ๋ง์ผ๋ฉด ์์ด ๋ชจ๋ ์ก์๋จนํ๋ค.
Solution
1. ์์ญ๋ณ๋ก ์ดํด๋ณด๊ธฐ ์ํด ๋ฐฐ์ด๊ฐ์ด #์ด ์๋๊ฒฝ์ฐ bfs๋ฅผ ํด์ ์์ ์์ ๋๋ ์๋ฅผ ๊ณ์ฐํ๋ค.
2. ์์ญ ๋ด๋ถ๊ฐ๋ง BFS๋ก ์ดํด๋ณด๊ณ , ๋ด๋ถ๊ฐ์ด v๋ฉด wolf๋ฅผ ๋ํด์ฃผ๊ณ k๋ฉด sheep์ ๋ํด์ค๋ค.
3. BFS๋ฅผ ํตํด ์์ญ์ ๋ชจ๋ ์ดํด๋ณธ ํ, ๋๋๊ฐ ๋ง์ผ๋ฉด ์์ด ๋ชจ๋ ์ก์๋จนํ๋ ansW์ ๋๋ ์(wolf)๋ฅผ ๋ํด์ฃผ๊ณ ์์ด ๋ง์ผ๋ฉด ๋๋๊ฐ ๋ชจ๋ ์ก์๋จนํ๋ ansS์ ์์ ์(sheep)๋ฅผ ๋ํด์ค๋ค.
์์ค ์ฝ๋
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <queue>
#define FASTio ios_base :: sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
#define endl '\n'
using namespace std;
int n,m;
vector<vector<char>> area(250,vector<char>(250));
vector<vector<bool>> check(250,vector<bool>(250));
int dy[]={-1,1,0,0};
int dx[]={0,0,1,-1};
int ansS =0;
int ansW =0;
void bfs(int y,int x)
{
int sheep = 0;
int wolf = 0;
queue<pair<int,int>> q;
q.push(make_pair(y,x));
check[y][x]=true;
if(area[y][x]=='v') wolf++;
else if(area[y][x]=='k') sheep++;
while(!q.empty())
{
int y = q.front().first;
int x = q.front().second;
q.pop();
for(int i=0;i<4;i++)
{
int ny = y + dy[i];
int nx = x + dx[i];
if(ny>=0 && nx>=0 && ny<n && nx<m && area[ny][nx]!='#')
{
if(check[ny][nx]==false)
{
if(area[ny][nx]=='v')
{
wolf++;
check[ny][nx] = true;
q.push(make_pair(ny,nx));
}
else if(area[ny][nx]=='k')
{
sheep++;
check[ny][nx] = true;
q.push(make_pair(ny,nx));
}
else if(area[ny][nx]=='.')
{
check[ny][nx] = true;
q.push(make_pair(ny,nx));
}
}
}
}
}
if(sheep>wolf)
{
wolf = 0;
}
else
{
sheep = 0;
}
ansS += sheep;
ansW += wolf;
}
int main()
{
FASTio;
cin >> n >> m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin >> area[i][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(area[i][j]!='#' && check[i][j]==false)
{
bfs(i,j);
}
}
}
cout << ansS << ' ' << ansW;
return 0;
}
'๐ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1600. ๋ง์ด ๋๊ณ ํ ์์ญ์ด (0) | 2023.02.01 |
---|---|
5014. ์คํํธ๋งํฌ (0) | 2023.01.28 |
17089. ์ธ ์น๊ตฌ (0) | 2023.01.24 |
15686. ์นํจ ๋ฐฐ๋ฌ (0) | 2023.01.23 |
17088. ๋ฑ์ฐจ์์ด ๋ฐํ (0) | 2023.01.23 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422