작성
·
254
·
수정됨
0
안녕하세요 큰돌님 혹시 제 코드 어떤 부분이 틀렸는지 알 수 있을까요?
ㅠㅠ
queue를 이용하지 않고 풀어봤습니다.
답변 2
0
안녕하세요 ㅎㅎ
코드를 보시면
void bfs(int y, int x)
{
for (int i = 0; i < 4; i++)
{
int ny = dy[i] + y;
int nx = dx[i] + x;
if (ny < 0 || ny >= n || nx < 0 || nx >= m)
continue;
if (visited[ny][nx]|| arr[ny][nx] == 'W')
continue;
visited[ny][nx] = visited[y][x] + 1;
dist_Max = max(dist_Max, visited[ny][nx]);
//cout << visited[ny][nx] << '\n';
bfs(ny, nx);
}
}
이거는 bfs가 아니라 재귀적으로 탐색하는 DFS라고 보시면 됩니다.
큐를 사용하지 않아서 틀렸다기 보다는.
코드 자체가 DFS로 작성하셨고
이 문제는 최단거리로 탐색, 즉 BFS로 탐색해야하기 때문에 틀린 거 같습니다.
가중치가 같은 그래프에서 최단거리 탐색을 할때는 BFS로 탐색해야 합니다.
문제를 보시면요 ㅎㅎ
보물 지도가 주어질 때, 보물이 묻혀 있는 두 곳 간의 최단 거리로 이동하는 시간을 구하는 프로그램을 작성하시오.
앞의 지문처럼 최단거리로 탐색해야 하는 것을 알 수 있습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
코드를 분석해보니, 큐를 이용하여 풀어야 하는 문제를 큐를 사용하지 않고 해결하려고 하셨는데요.
큐를 사용하지 않고 푸는 방식은 문제에 따라 가능한 경우도 있지만, 어떤 문제의 경우에는 큐를 사용하지 않으면 정확한 결과를 얻을 수 없을 수도 있습니다.
따라서, 큐가 필요한 문제라면 큐를 사용하시는 것을 권장합니다.
문제를 자세히 알지 못해서 정확한 문제의 내용을 파악하지 못했지만, 큐를 사용해야 하는 이유가 문제의 조건이나 요구사항에 반영되어 있을 가능성이 높습니다.
또한, 큐를 사용하지 않고 다른 방식으로 풀었을 경우에도 정확한 결과를 얻기 위해서는 다른 방식에 대한 깊은 이해와 분석이 필요할 수 있습니다.
큐를 사용하는 방법을 알아보시고, 문제를 다시 풀어보시는 것을 추천드립니다.
더 도움이 필요하시면 문제의 상세 내용을 공유해주시면 더 자세하게 답변드릴 수 있을 것 같아요.
앗 감사합니다~!!ㅎㅎ