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

백준 C# - 15654 +) 풀이

by 코딩하는 돼징 2024. 2. 19.
반응형

이 문제를 풀기 앞서 아래 문제를 먼저푸는 것을 추천한다.

백준 C# - 15649 (N과 M(1))

 

백준 C# - 15649 +) 풀이

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

code-piggy.tistory.com


N과 M(1)문제와 다른점

둘째 줄에 N개의 수가 직접 주어지는 것이다. 출력 부분에서 수열은 사전 순으로 증가하는 순서로 출력되므로 처음부터 Sort해주었다.

int[] input = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
N = input[0];
M = input[1];
array = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
Array.Sort(array);

코드 전문

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace baek2
{
    class Program
    {
        static int N, M;
        static bool[] visited = new bool[9];
        static int[] array = new int[10001];
        static int[] answer = new int[10001];
        static StringBuilder sb = new StringBuilder();
        public static void dfs(int depth)
        {
            if(depth == M)
            {
                for(int i = 0; i <  M; i++)
                {
                    sb.Append(answer[i]).Append(' ');
                    
                }
                sb.AppendLine();
                return;
            }

            for(int i = 1; i <= N; i++)
            {
                if(!visited[i])
                {
                    visited[i] = true;
                    answer[depth] = array[i-1];
                    dfs(depth + 1);
                    visited[i] = false;
                }
            }
        }
        public static void Main()
        {
            int[] input = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
            N = input[0];
            M = input[1];
            array = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
            Array.Sort(array);

            dfs(0);
            Console.Write(sb.ToString());
        }  
    }
}
반응형

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

백준 C# - 15657 +) 풀이  (0) 2024.02.19
백준 C# - 15655 +) 풀이  (0) 2024.02.19
백준 C# - 15652 +) 풀이  (0) 2024.01.19
백준 C# - 15651 +) 풀이  (0) 2024.01.19
백준 C# - 15650 +)풀이  (0) 2024.01.19

댓글