[자료구조] Set 자료구조 알아보기

Innes·2025년 8월 19일
0

1. set 자료구조란 무엇인가

set은 수학의 집합 개념을 기반으로 하는 자료구조입니다. 가장 중요한 특징은 중복된 요소를 허용하지 않는다는 점입니다. {} 중괄호를 사용하여 선언하며, 키(Key)와 값(Value)의 쌍으로 이루어진 딕셔너리와는 구분됩니다.

# set은 중복을 허용하지 않습니다.
unique_set = {1, 2, 2, 3, 4}
print(unique_set)
# 결과: {1, 2, 3, 4}

참고: 빈 set은 my_set = set()으로 선언해야 합니다. {}는 빈 딕셔너리로 인식됩니다.


2. set을 사용해야 하는 이유: 성능

set시간 효율성 측면에서 리스트보다 우수한 성능을 제공합니다. 이는 set이 내부적으로 해시 테이블을 사용하여 데이터를 관리하기 때문입니다.

  • 리스트: 특정 요소의 존재 여부를 확인하기 위해 첫 번째 요소부터 순차적으로 탐색합니다. (시간 복잡도: O(N))
  • set: 해시 테이블을 통해 요소의 위치를 즉시 찾아냅니다. (시간 복잡도: O(1))

따라서 in 연산을 통한 데이터 존재 여부 확인이 빈번하게 발생하는 알고리즘 문제에서 set은 압도적인 속도를 보여줍니다.


3. set 자료구조의 주요 활용법

set은 주로 데이터의 중복을 제거하거나, 빠른 검색이 필요할 때 활용됩니다. 다음은 set의 주요 사용 예시입니다.

A. 리스트의 중복 제거

가장 보편적인 활용법입니다. 리스트를 set으로 변환하기만 하면 중복이 자동으로 제거됩니다.

my_list = [1, 2, 3, 2, 4, 1]
# 리스트를 set으로 변환하여 중복 제거
unique_elements = set(my_list)
print(unique_elements)
# 결과: {1, 2, 3, 4}

B. 요소 추가 및 삭제

set에 요소를 추가하거나 삭제할 때는 add()와 remove() 메서드를 사용합니다.

my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
# 결과: {1, 2, 3, 4}

my_set.remove(1)
print(my_set)
# 결과: {2, 3, 4}

C. 정렬된 리스트로 변환

set은 순서가 없기 때문에 정렬이 필요한 경우, sorted() 함수를 사용하여 list로 변환해야 합니다.

unique_elements = {1, 3, 2}
# sorted() 함수는 정렬된 리스트를 반환합니다.
sorted_list = sorted(list(unique_elements))
print(sorted_list)
# 결과: [1, 2, 3]

결론

set은 코딩 테스트에서 중복 제거 및 빠른 검색을 위한 핵심 자료구조입니다. 리스트와 딕셔너리처럼 자유롭게 다룰 수 있도록 연습한다면, 복잡한 문제도 효율적으로 해결하는 통찰력을 기를 수 있을 것입니다.

profile
무서운 속도로 흡수하는 스펀지 개발자 🧽

0개의 댓글