C# 1260번 DFS와 BFS
2022. 3. 4. 18:56ㆍ코딩테스트 문제 풀이/[백준] DFS와 BFS
728x90
반응형
코드 :
using System;
using System.Collections.Generic;
namespace _1
{
class Program
{
static int[] input;
static int N;
static int M;
static int V;
static public int[,] map = new int[1001, 1001];
static public bool[] visited = new bool[1001];
static public Queue<int> queue = new Queue<int>();
static public Stack<int> stack = new Stack<int>();
static void Reset()
{
for (int i = 1; i <= N; i++)
{
visited[i] = false;
}
}
static void DFS(int V)
{
visited[V] = true;
Console.Write(V + " ");
for (int i = 1; i <= N; i++)
{
if (map[V, i] == 1 && visited[i] == false)
{
DFS(i);
}
}
}
static void BFS(int V)
{
queue.Enqueue(V);
visited[V] = true;
int start = V;
while (queue.Count != 0)
{
//큐에서 나오는 값을 시작변수로 계속 바꿔줘야함
start = queue.Dequeue();
Console.Write(start + " ");
for (int i = 1; i <= N; i++)
{
if(map[start, i] == 1 && visited[i] == false)
{
queue.Enqueue(i);
visited[i] = true;
}
}
}
}
static void Main(string[] args)
{
input = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
N = input[0];
M = input[1];
V = input[2];
for (int i = 0; i < M; i++)
{
int[] mArray = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
map[mArray[0], mArray[1]] = 1;
map[mArray[1], mArray[0]] = 1;
}
Reset();
DFS(V);
Console.WriteLine();
Reset();
BFS(V);
}
}
}
풀이 :
DFS는 스택으로 BFS는 큐로 풀라고 들어서 BFS는 큐로 풀었는데 DFS를 스택으로 풀지 못해서 아쉬웠다. 예전에는 탐색에 대한 두려움이 있었는데 막상 풀어보니 감을 잡은거 같다.
728x90
반응형
'코딩테스트 문제 풀이 > [백준] DFS와 BFS' 카테고리의 다른 글
C# 7576번 토마토 (0) | 2022.03.13 |
---|---|
C# 2178번 미로 탐색 (0) | 2022.03.12 |
C# 1012번 유기농 배추 (0) | 2022.03.12 |
C# 2667번 단지번호붙이기 (0) | 2022.03.04 |
C# 2606번 바이러스 (0) | 2022.03.04 |