학교 수업 정리 3

DFS를 이용한 순열과 조합의 차이

백문이 불여일타 ! 코드로써 설명한다.    DFS의 파라미터로 Start를 넣느냐 안넣는냐의 차이. (permutaion은 0부터 시작)순열의 경우 package 이코테.DFSBFS;import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;public class 연산자끼워넣기 { static int[] arr; static ArrayList calculate = new ArrayList(); static ArrayList> output = new ArrayList>(); static boolean[] visit; static int plus; static int minus; static ..

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

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..