https://www.acmicpc.net/problem/2178
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int dx[4] = { -1,0,1,0 };
int dy[4] = { 0,-1,0,1 };
int n, m;
queue<pair<int, int>> q;
vector<vector<int>> v;
vector<vector<int>> visited;
void BFS(int y, int x)
{
q.push({y, x});
visited[y][x] = 1;
while (q.empty() == false)
{
int curry = q.front().first;
int currx = q.front().second;
q.pop();
for (int i = 0; i < 4; i++)
{
int ny = curry + dy[i];
int nx = currx + dx[i];
if(ny >=0 && ny < n && nx >= 0 && nx < m)
{
if(visited[ny][nx] == false && v[ny][nx] == 1)
{
visited[ny][nx] = visited[curry][currx] + 1;
q.push({ ny,nx });
}
}
}
}
}
int main()
{
cin >> n >> m;
v.resize(n, vector<int>(m, 0));
visited.resize(n, vector<int>(m, 0));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
scanf_s("%1d", &v[i][j]);
BFS(0,0);
cout << visited[n-1][m-1] << endl;
}
- 이상하게 DFS로 풀었는데 틀렸다
- 뭔가 잘못 풀었던 것 같지만 아에 새로 BFS를 구현하여 풀었다
'코딩 태스트 > 문제풀이' 카테고리의 다른 글
안전 영역(x) (0) | 2025.01.10 |
---|---|
유기농 배추(x) (0) | 2025.01.10 |
1(X) (0) | 2025.01.10 |
곱셈(x) (0) | 2025.01.10 |
좋은 단어 (0) | 2025.01.10 |