[알고리즘] 서로소 집합(Disjoint-set): Union-Find Algorithm
·
CS/알고리즘
0. 서로소 집합서로소(상호배타) 집합은 서로 중복 포함된 원소가 없는 집합이다. 즉, 교집합이 없는 집합을 의미한다.집합에 속한 하나의 특정 멤버를 통해 각 집합들을 구분하며 이를 대표자(representative)라 한다.서로소 집합을 표현하는 방법연결 리스트트리 → 구현이 쉬움서로소 집합 연산Make-Set(x) - 유일한 멤버 x를 포함하는 새로운 집합을 생성 (서로소 집합 초기화 작업)Find-Set(x) - x를 포함하는 집합을 찾는 연산 (대표자 탐색)Union(x, y) - x와 y를 포함하는 두 집합을 통합하는 연산1. 서로소 집합 표현1-1. 연결 리스트같은 집합의 원소들은 하나의 연결 리스트로 관리한다.연결 리스트의 맨 앞의 원소를 집합의 대표 원소로 삼는다.각 원소는 집합의 대표원소..
[알고리즘] 순열, 조합, 부분 집합
·
CS/알고리즘
0. 순열, 조합, 부분집합알고리즘 문제를 풀다 보면, 특정 원소에서 몇개를 뽑아 써야 하는 경우가 종종 있다.이 때, 알고 있어야 하는 순열과 조합 그리고 부분집합을 구현하는 방식을 작성했다.1. 순열서로 다른 n개 중 r개를 뽑아서 한 줄로 나열하는 것 2. 조합서로 다른 n개 중 r개를 순서 없이 골라내는 것 3. 부분집합집합에 포함된 원소들을 선택하는 것 → n개의 원소에는 공집합을 포함하여 2^n개이다.