[알고리즘] 순열, 조합 응용: Next Permutation
·
CS/알고리즘
0. Next Permutation현 순열에서 사전 순으로 다음 순열을 생성하는 것 이를 이용하여 순열과 조합을 표현할 수 있다.재귀를 통해 구현한 순열, 조합보다 빠르다는 장점을 가지고 있다.하지만 nPn만 가능하다는 단점을 가지고 있다.1. 알고리즘배열을 오름차순으로 정렬한다.아래 과정을 반복하여 사전 순으로 다음을 큰 순열을 생성한다.(가장 큰 순열을 만들 때까지 반복)뒤에서부터 탐색하며 교환 위치(pivot) 찾기 → 최초로 pivot 뒤에서부터 탐색하며 교환 위치(pivot)와 교환할 위치(successor) 찾기 → pivot 두 위치(pivot, successor) 값 교환교환 위치(pivot)의 뒷 부분을 오름차순으로 정렬NextPermutation 사용 전에 숫자배열을 오름차순으로 정렬한..
[알고리즘] 순열, 조합, 부분 집합
·
CS/알고리즘
0. 순열, 조합, 부분집합알고리즘 문제를 풀다 보면, 특정 원소에서 몇개를 뽑아 써야 하는 경우가 종종 있다.이 때, 알고 있어야 하는 순열과 조합 그리고 부분집합을 구현하는 방식을 작성했다.1. 순열서로 다른 n개 중 r개를 뽑아서 한 줄로 나열하는 것 2. 조합서로 다른 n개 중 r개를 순서 없이 골라내는 것 3. 부분집합집합에 포함된 원소들을 선택하는 것 → n개의 원소에는 공집합을 포함하여 2^n개이다.