C# 1260번 DFS와 BFS

2022. 3. 4. 18:56C#/[백준] DFS와 BFS

문제

코드 :

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를 스택으로 풀지 못해서 아쉬웠다. 예전에는 탐색에 대한 두려움이 있었는데 막상 풀어보니 감을 잡은거 같다.

'C# > [백준] 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