본문 바로가기
반응형

코딩테스트 준비/백준 C#161

백준 C# - 15663 +) 풀이 이 문제를 풀기 앞서 아래 문제를 먼저푸는 것을 추천한다. 백준 C# - 15649 백준 C# - 15649 +) 풀이 대표적인 백트래킹 문제이다. 백트래킹 모든 경우의 수를 탐색하며 더 이상 해가 나올 것 같지 않으면 이전으로 돌아가서 다른 경우를 탐색한다. 풀이 원래 알던 DFS 알고리즘에서는 visited[i] = tru code-piggy.tistory.com 15654와 다른 점 - 중복되는 수열이 여러 번 출력되지 않아야하는 것이다. 그래서 어떻게 풀어야할까 하다가 HashSet을 생각해냈다. HashSet의 가장 큰 특징은 중복을 사용하지 않는 것이다, 그러므로 수열을 저장할때 HashSet을 사용하였다. if(depth == M) { for(int i = 0; i < M; i++) { sb.. 2024. 2. 21.
백준 C# - 15657 +) 풀이 이 문제를 풀기 앞서 아래 문제를 풀고 오는 것을 추천한다. 백준 C# - 15652 +) 풀이 N과 M(4)번 문제이다. 앞서 N과 M(2)번 문제와 비슷한 문제이다. 하지만 2번과 달리 4번에서는 같은 숫자를 골라도 된다. N과 M(2)번 알고리즘 살펴보기 if (!visited[i]) { visited[i] = true; arr[depth] = i; Dfs(i, d code-piggy.tistory.com N과 M(4)문제와 다른점 둘째 줄에 N개의 수가 직접 주어지는 것이다. 출력 부분에서 수열은 사전 순으로 증가하는 순서로 출력되므로 처음부터 Sort해주었다. int[] input = Array.ConvertAll(Console.ReadLine().Split(), int.Parse); N = i.. 2024. 2. 19.
백준 C# - 15655 +) 풀이 이 문제를 풀기 앞서 아래 문제를 푸는 것을 추천한다. 백준 C# - 15650 +)풀이 이 문제를 풀기 앞서 아래 문제를 먼저 풀고 오는 것을 추천한다. 백준 C# - 15649 +) 풀이 대표적인 백트래킹 문제이다. 백트래킹 모든 경우의 수를 탐색하며 더 이상 해가 나올 것 같지 않으면 이 code-piggy.tistory.com N과 M(2)문제와 다른점 둘째 줄에 N개의 수가 직접 주어지는 것이다. 출력 부분에서 수열은 사전 순으로 증가하는 순서로 출력되므로 처음부터 Sort해주었다. int[] input = Array.ConvertAll(Console.ReadLine().Split(), int.Parse); N = input[0]; M = input[1]; array = Array.Convert.. 2024. 2. 19.
백준 C# - 15654 +) 풀이 이 문제를 풀기 앞서 아래 문제를 먼저푸는 것을 추천한다. 백준 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 = in.. 2024. 2. 19.
백준 C# - 15652 +) 풀이 N과 M(4)번 문제이다. 앞서 N과 M(2)번 문제와 비슷한 문제이다. 하지만 2번과 달리 4번에서는 같은 숫자를 골라도 된다. N과 M(2)번 알고리즘 살펴보기 if (!visited[i]) { visited[i] = true; arr[depth] = i; Dfs(i, depth+1); visited[i] = false; } N과 M(4) 알고리즘 자릿수에 같은 숫자가 연속으로 오지 않게하기 위해 visited를 사용하였는데 여기에서 방문부분이 필요 없으므로 이와 관련된 부분을 삭제하면 된다. arr[depth] = i; Dfs(i,depth + 1); 코드 전문 using System; using System.Text; namespace baek2 { class Program { static int.. 2024. 1. 19.
백준 C# - 15651 +) 풀이 N과 M(3)번 문제이다. 만약 N과 M(1)과 N과 M(2)번을 풀고 왔으면 쉽게 풀 수 있다. 예제 출력을 보면 모든 조합이 다 출력되는 것을 확인할 수 있다. (아래 참조) 1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 3 1 3 2 3 3 3 4 4 1 4 2 4 3 4 4 N과 M(1)번 알고리즘 살펴보기 앞서 N과 M(1)번에서는 자릿수에 같은 숫자가 연속으로 오지 않게하는 문제였는데 여기에서 이를 적용하기 위해 방문표시를 했는데 여기에서 방문부분을 없애게 되면 전체 조합을 구할 수 있게 된다. if(!visited[i]) { visited[i] = true; arr[depth] = i; DFS(depth + 1); visited[i] = false; } 전체 조합의 경우를 구하는 .. 2024. 1. 19.
반응형