[BOJ][C#] 10974 모든 순열

LimJaeJun·2024년 1월 30일
0

PS/BOJ

목록 보기
103/108

📕 문제

📌 링크

📗 접근 방식

간단한 백트래킹 문제 인 것같다.
기록할 수 있는 수들을 각각 확인하며 방문한 적이 없다면 기록해주고 방문처리를 해준다.
방문한 적이 있다면 기록하지 않고 건너뛴다.

📘 코드

using System.Text;

namespace BOJ
{
    static class Input<T>
    {
        static public T Get() => ConvertTo(Console.ReadLine());
        static T ConvertTo(string s) => (T)Convert.ChangeType(s, typeof(T));
    }
    
    class No_10974
    {
        static StringBuilder sb = new StringBuilder();
        static bool[] used;
        static int[] num;
        static int input;
        
        static void Main()
        {
            input = Input<int>.Get();
            used = new bool[input + 1];
            num = new int[input + 1];

            Recur(0);

            Console.Write(sb);
        }

        static void Recur(int depth)
        {
            if (depth == input)
            {
                for (int i = 0; i < input; i++)
                {
                    sb.Append($"{num[i]} ");
                }

                sb.AppendLine();

                return;
            }

            for (int i = 0; i < input; i++)
            {
                if (used[i] != false) continue;
                
                used[i] = true;
                num[depth] = i + 1;
                Recur(depth + 1);
                used[i] = false;
            }
        }
    }
}

📙 오답노트

📒 알고리즘 분류

  • 브루트포스 알고리즘
  • 백트래킹
profile
Dreams Come True

0개의 댓글

관련 채용 정보