본문 바로가기
코딩테스트 준비/백준 C#

백준 C# - 1987

by 코딩하는 돼징 2024. 3. 12.
반응형

풀다보니 백트래킹 문제였다. 풀다보니 헷갈린게 있어서 버벅거렸다 하핳..

아래 링크에 있는 알고리즘의 큰 맥란이 매우 비슷하다! 알고리즘에 대한 자세한 설명은 아래 게시글에 있다.

 

백준 C# - 15649 +) 풀이

대표적인 백트래킹 문제이다. 백트래킹 모든 경우의 수를 탐색하며 더 이상 해가 나올 것 같지 않으면 이전으로 돌아가서 다른 경우를 탐색한다. 풀이 원래 알던 DFS 알고리즘에서는 visited[i] = tru

code-piggy.tistory.com


코드 전문

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace baek2
{
    class Program
    {
        static char[,] graph;
        static bool[] visited = new bool[27];
        static int[] dirX = { -1, 1, 0,0 };
        static int[] dirY = { 0, 0, 1, -1 };
        static int R,C;
        static int maxCount = 0;
        public static void DFS(int x, int y,int count)
        {
            if (maxCount < count) maxCount = count;
            for(int i = 0; i< 4; i++)
            {
                int newX = x + dirX[i];
                int newY = y + dirY[i];
                if (newX < 0 || newX >= R || newY < 0 || newY >= C )
                {
                    continue;
                }
                if (!visited[graph[newX, newY] - 'A'])
                {
                    visited[graph[newX, newY] - 'A'] = true;
                    DFS(newX, newY, count + 1);
                    visited[graph[newX, newY] - 'A'] = false;
                }
            }
        }
        public static void Main()
        {
            int[] array = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
            R = array[0];
            C = array[1];
            graph = new char[R + 5, C + 5];

            for(int i = 0; i<R; i++)
            {
                string input = Console.ReadLine();
                for (int j = 0; j < C; j++)
                {
                    graph[i, j] = input[j];
                }
            }
            visited[graph[0,0] - 'A'] = true;
            DFS(0, 0, 1);
            
            Console.Write(maxCount);
        }
    }
}
반응형

'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글

백준 C# - 11286 +) 눈물의 풀이  (2) 2024.03.17
백준 C# - 1235 +) 풀이  (0) 2024.03.13
백준 C# - 11725 +) 풀이  (0) 2024.03.04
백준 C# - 17219  (1) 2024.02.24
백준 C# - 1620 +) 풀이  (0) 2024.02.24

댓글