완전탐색(2)
-
[알고리즘] 탐색(2) - 순열(Permutation)
개념 서로 다른 n개의 수 중에 r개를 선택하여 나열 nPr = n x n-1 x n-2 ...... x n-r+1 리스트를 순서대로 수를 뽑아 나열하는 것. 즉, 순서에 의미가 있는 것이 순열입니다. 반대로 순서에 의미가 없다면 조합이 되겠습니다. Itreative function Recursive function Itreative function은 c++의 STL인 next_permutation 방식입니다. 설명과 직접 구현을 해보도록 하겠습니다. Recursive function은 재귀 호출 방식입니다. 마찬가지로 직접 구현 해보도록 하겠습니다. Iterative function (next_permutation) ① 뒤쪽부터 탐색하며 꼭대기를 찾자 꼭대기를 왜 찾아야 할까요? 두 가지 리스트를 가지..
2020.04.11 -
[알고리즘] 탐색(1) - 완전탐색(Brute-force)
개념 완전탐색은 알고리즘에 입문하는 사람들이 가장 처음으로 접하는 내용일것입니다. 그만큼 어려운 내용은 아니며, 말 그대로 완전히 탐색하는 것입니다. 영어로는 brute-force라고 하는데, 이것을 번역해보면 "무식하게 풀기"라는 뜻입니다. 구현 완전탐색을 할 때 사용되어지는 방식은 크게 두가지로 볼 수 있습니다. 1. Iterative 2. recursion 1번은 for문을 이용한 풀이 이고 2번은 재귀 호출을 이용하여 푸는 방법입니다. 예를 들어, 1부터 n까지의 합을 구하는 코드를 구성해보겠습니다. // iterator // 조건 : n >=1 // 1~n의 합을 반환한다. int sum(int n) { int ret = 0; for (int i = 1; i < n; ++i) ret += i; ..
2020.04.10