목록백준 문제 풀이 (158)
-
# 코드 해설 이번엔 저번 문제의 N과 M(1) 보다 훨씬 간단한 문제입니다. 중복된 수열에 대해서는 따로 신경 쓸 필요가 없기 때문에 단순히 for문에 대해서 증가되는 수열 값만 출력해주면 되겠습니다. import java.util.Scanner; public class Main { public static int[] arr; public static int N, M; public static void main(String[] args) { Scanner in = new Scanner(System.in); N = in.nextInt(); M = in.nextInt(); arr = new int[M]; dfs(1, 0); } public static void dfs(int at, int depth) { ..
문제 해석 알고리즘 기법 중에는 백트래킹(Back-Tracking)이라는 기법이 있다. 되추적이라는 의미로서 어떤 노드의 유망성을 판단한 뒤 해낭 노드가 유망하지 않을 경우 부모 노드로 돌아가 다른 자식 노드를 찾는 알고리즘의 기법이다. 즉 모든 경우의 수를 찾는다는 점에서 BFS와 비슷하지만 그 중에서도 가능성이 있는 노드의 경우의 수만 찾는 기법이라고 할 수 있다. 나도 아직 공부하는 입장이라 백트래킹, 브루트포스 깊이우선탐색(DFS)의 정확한 차이를 쉽게 구분하기 어려워 여러 사이트의 정보를 인용하여 블로그를 작성하였다. 만약 지나가다 들렀으면 잘 이해하고 넘어가길 바란다. 예를 들어 "a + b + c + d = 10"을 만족하는 모든 경우의 수를 구하시오 (단, a,b,c,d는 0이 아닌 정수)..