셋(Set)
셋(Set)
셋(Set)은 비선별형 자료구조로, 컴퓨터 과학 및 프로그래밍에서 중복되지 않는 값을 저장하는 데
사용됩니다.
셋은 주로 집합 이론에서 영감을 받아 만들어진 자료구조로,
집합 개념과 유사하게 각 요소는 중복되지 않으며 순서가 없습니다.
이러한 특성 때문에 셋은 고유한 값들의 모음을 저장하거나 중복을 제거할 때 유용하게 활용됩니다.
셋의 주요 특징
중복 요소가 없음:
셋은 중복된 요소를 허용하지 않습니다.
만약 동일한 요소를 여러 번 추가하더라도 그 값은 하나만 유지됩니다.
순서가 없음:
셋은 요소들을 어떤 순서로 저장하는지에 대한 보장이 없습니다.
따라서 요소를 삽입한 순서대로 접근할 수 없으며, 정렬되지 않은 상태로 보관됩니다.
셋은 다양한 프로그래밍 언어에서 지원되며,
각 언어마다 조금씩 다를 수 있지만 일반적으로 다음과 같은 기본적인 작업을 수행할 수 있습니다:
요소 추가: 셋에 새로운 요소를 추가할 수 있습니다.
요소 삭제: 특정 요소를 삭제할 수 있습니다.
요소 검색: 셋에 특정 요소가 존재하는지 확인할 수 있습니다.
크기 확인: 셋에 저장된 요소의 개수를 확인할 수 있습니다.
집합 연산: 합집합, 교집합, 차집합 등과 같은 집합 연산을 수행할 수 있습니다.
셋은 데이터를 중복 없이 저장하거나 중복을 제거하려는 경우에 유용하며, 데이터베이스,
데이터 처리, 알고리즘, 그래프 이론, 통계 등 다양한 컴퓨터 과학 및 프로그래밍 응용 분야에서 활용됩니다.
셋의 종류
집합(Set)
언제 사용:
중복을 허용하지 않는 고유한 값의 집합을 유지하고자 할 때 사용합니다.
설명:
많은 프로그래밍 언어에서 "집합(Set)" 또는 유사한 이름으로 제공됩니다.
이러한 집합은 중복된 요소를 자동으로 걸러내며, 추가된 순서를 보장하지 않습니다.
주로 고유한 값들을 저장하거나 중복을 제거하는 데 사용됩니다.
해시셋(HashSet):
언제 사용:
검색 속도가 중요한 경우에 사용합니다.
설명:
해시셋은 해시 함수를 사용하여 요소를 저장하므로 검색 속도가 매우 빠릅니다.
중복을 허용하지 않으며, 요소 순서를 보장하지 않습니다.
주로 데이터베이스 인덱싱, 검색, 고유한 값의 관리에 사용됩니다.
링크드셋(LinkedHashSet):언제 사용:
순서가 중요하면서 중복을 제거해야 할 때 사용합니다.
설명:
링크드셋은 중복을 허용하지 않고, 요소를 삽입된 순서대로 유지합니다.
이는 요소의 순서가 중요한 경우에 유용합니다.
트리셋(TreeSet):
언제 사용:
정렬된 순서로 요소를 저장하고자 할 때 사용합니다.
설명:
트리셋은 이진 검색 트리 구조를 사용하여 요소를 저장하며, 저장된 요소는 정렬된 순서로 유지됩니다.
중복을 허용하지 않습니다. 주로 정렬된 데이터를 관리하고 검색하는 데 사용됩니다.
불변셋(Immutable Set):
언제 사용: 변경이 불가능한(immutable) 요소를 관리하고자 할 때 사용합니다.
설명:
불변셋은 요소를 한 번 설정하면 변경할 수 없는(set) 자료구조입니다.
이는 데이터의 무결성을 유지하고 병렬 처리 환경에서 안전한 자료구조를 만들 때 사용됩니다.
셋의 종류는 프로그래밍 언어나 라이브러리에 따라 다를 수 있으며,
상황과 요구사항에 따라 어떤 종류의 셋을 선택하는 것이 중요합니다.
주어진 문제나 작업에 맞게 가장 적절한 셋을 선택하여 중복을 제거하거나
고유한 값들을 효과적으로 관리할 수 있습니다.
'목차훔치기 > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
해시 테이블(Hash Table)(면접을 위한 CS 전공지식 노트) (2) | 2023.11.04 |
---|---|
맵(Map)(면접을 위한 CS 전공지식 노트) (0) | 2023.11.02 |
우선순위 큐(면접을 위한 CS 전공지식 노트) (0) | 2023.11.01 |
힙(Heap)(면접을 위한 CS 전공지식 노트) (0) | 2023.10.31 |
트리(면접을 위한 CS 전공지식 노트) (2) | 2023.10.30 |