Algorithm/자료구조 정리 2

내가 생각한 알고리즘 문제풀이 유형별 핵심.

DP 1. dp[i] = num 의 정의, i 와 num이 무엇을 의미하는가. 예) dp[i]=num 은 i번째 값이 최대로 연속되서 이어진 수열의 일부분일때, i 번째 까지의 수열의 갯수= num. 2. 마지막항 dp[N] 과 dp[N-1]의 관계. 백트래킹. 1. dfs(시작값, 깊이) 로 dfs식을 만들면 된다. 시작값에 누적합을 적용시키자. 즉, 누적한 값을 다시 시작값에 넣어서 재귀로 돌리자. 누적합은 배열의 형태일수도 있고 수로 += 가 될수도 있다. 2. 다시 경로를 되돌아가기 위한 조건을 dfs 재귀가 끝나는 바로 뒤에 위치시키자. 3.깊이의 종료조건을 생각하자. bfs. 1.수직선이든, 평면이든, 이동가능한 값들을, 배열에 넣어서 한 배열 사이클이 돈 것을 1계층 이동으로 생각하자.

무작위로 주어진 수들의 순열,조합 구하기. (백트레킹) 2021-06-10

우선적으로 사용자로부터 N과 M 입력 값을 받는다. 그리고, 연산의 대상이되는 수들을 사용자로부터 N개 입력받는다. N P M을 구해보겠다. 우선 순열이나, 조합 모두 dfs의 방법중 하나인 백트레킹을 이용한다. 1.모든 노드를 탐색해야한다. 2.노드 탐색의 조건이 있다.(한번 방문한 노드는 방문하지 않는다. 그러므로 dfs를 통한 백트레킹 방법을 이용한다. import java.io.*; import java.util.*; public class Main { static int[] arr; static int[] output; static boolean[] value; static int N; static int M; public static void main(String[] args) throws I..