14442. ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ 2
by rlaehddnd0422https://www.acmicpc.net/problem/14442
Solution
ํ์ฌ ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ ์ฅํ๋ค๋ ์ ์์ ์ด์ ํฌ์คํ ์์ ๋ค๋ฃฌ ๋ฌธ์ ์ ์ ํํ ๊ฐ์ ์ ํ์ ๋ฌธ์ ์ ๋๋ค.
์ด์ ํฌ์คํ ๊ณผ ๋งค์ฐ ์ ์ฌํ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ์์ค์ฝ๋๋ฅผ ์งง๊ฒ ์ค๋ช ํ๊ณ ๋๋ด๋๋ก ํ๊ฒ ์ต๋๋ค.
์์ค ์ฝ๋
#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;
vector<vector<char>> v(1001,vector<char>(1001));
bool check[1001][1001][11];
int n,m,k;
int dy[]={-1,1,0,0};
int dx[]={0,0,-1,1};
int bfs(int y,int x)
{
queue<pair<pair<int,int>,pair<int,int>>> q;
q.push(make_pair(make_pair(y,x),make_pair(0,0)));
check[y][x][0]=true;
while(!q.empty())
{
int y = q.front().first.first;
int x = q.front().first.second;
int cnt = q.front().second.first;
int ans = q.front().second.second;
if(y==n-1 && x==m-1)
{
return ans+1;
}
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)
{
if(check[ny][nx][cnt+1]==false && v[ny][nx]=='1' &&cnt<k)
{
q.push(make_pair(make_pair(ny,nx),make_pair(cnt+1,ans+1)));
check[ny][nx][cnt+1] = true;
}
else if(check[ny][nx][cnt]==false && v[ny][nx]=='0')
{
q.push(make_pair(make_pair(ny,nx),make_pair(cnt,ans+1)));
check[ny][nx][cnt]=true;
}
}
}
}
return -1;
}
int main()
{
FASTio;
cin >> n >> m >> k;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin >> v[i][j];
}
}
int ans = bfs(0,0);
cout << ans;
return 0;
}
๋ง์ฐฌ๊ฐ์ง๋ก 3์ฐจ์ ๋ฒกํฐ bool check๋ฅผ ๋ง๋ค์ด ์ฃผ์์ต๋๋ค.
check[y][x][0] => ๋ฒฝ์ 0๋ฒ ๋ถ์๊ณ (x,y) ์ขํ๋ก ์ด๋
check[y][x][1] => ๋ฒฝ์ 1๋ฒ ๋ถ์๊ณ (x,y) ์ขํ๋ก ์ด๋
๋ง์ฐฌ๊ฐ์ง๋ก queue์ ํ์ฌ y์ขํ, x์ขํ, ๋ฒฝ ๋ถ์ ํ์(๋ค์์ขํ๊ฐ 1์ธ๋ฐ ์ด๋ํ ํ์), ์ด ์ด๋ ํ์๋ฅผ ์ ์ฅํ๋ฉด์ BFS์งํ
๋ง์ฐฌ๊ฐ์ง๋ก ํ์ฌ ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ ์ฅํ๋ค๋ ์์ด๋์ด๋ง ์์ผ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
'๐ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
4991. ๋ก๋ด์ฒญ์๊ธฐ (0) | 2023.02.07 |
---|---|
2151. ๊ฑฐ์ธ์ค์น (0) | 2023.02.03 |
1600. ๋ง์ด ๋๊ณ ํ ์์ญ์ด (0) | 2023.02.01 |
5014. ์คํํธ๋งํฌ (0) | 2023.01.28 |
3187. ์์น๊ธฐ ๊ฟ (0) | 2023.01.27 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422