Page 277 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 277
07-2 배열로 집합 만들기
같은 자료형이 모인 집합은 배열로 표현할 수 있습니다. 배열로 만든 집합에 대해 좀 더 알아
보겠습니다.
배열로 집합 만들기
모든 원소가 같은 자료형으로 구성된 집합은 배열로 표현할 수 있습니다. 예를 들어 정수로
이루어진 {1, 2, 3, 4, 5, 6, 7, 8}은 아래처럼 요소의 개수가 8개인 int형 배열 안에 넣을 수 있
습니다.
8 1 4 2 7 6 3 5
그런데 배열을 사용하여 집합을 표현하려면 집합의 원소 개수와 배열의 요소 개수는 항상 같
아야 합니다. 즉, 집합의 상태를 표현할 데이터가 필요합니다. 따라서 다음과 같이 집합을 표
현하는 배열과 이 배열의 정보(집합의 최대 크기, 집합의 원소 개수)를 담은 구조체를 함께 사용해
야 합니다. 그림 7-6은 int형을 원소로 갖는 집합을 구조체 IntSet으로 관리하는 모습을 나타
낸 것입니다. 4장에서 학습한 스택, 큐에서 사용한 방법과 같은 방식입니다.
typdef struct { max 8
int max; /* 집합의 최대 크기 */ num 4
int num; /* 집합의 원소 개수 */ set
int *set; /* 집합 */ 0 52
} IntSet; 1 63 집합의
2 14 num 원소 개수
3 22 max 집합의
num ❹ 크기
5
6
7
[그림 7-6] 배열에 의한 집합을 관리하기 위한 구조체 IntSet
구조체 IntSet은 다음과 같은 3개의 멤버로 구성됩니다.
max
집합의 최대 크기를 나타내는 멤버입니다. 이 그림의 max 값은 8입니다.
07•집합 277