🧑🏻💻
알고리즘 박살내기 - 06. 파이썬 기초(사전, 집합 자료형)
April 13, 2022
Introduction
본 포스트는 알고리즘 학습에 대한 정리를 재대로 하기 위하여 남기는 것입니다. 더불어 기본 내용은 나동빈 저의 〖이것이 취업을 위한 코딩 테스트다〗라는 교재 및 유튜브 강의의 내용에서 발췌했고, 그 외 추가적인 궁금 사항들을 검색 및 정리해둔 것입니다.
사전 자료형
개념
- 사전 자료형은 키와 값의 쌍으로 이루어진 자료형입니다.
앞서 다룬 자료형인 리스트나 튜플이 값을 순차적으로 저장하고, 인덱싱을 하는것 과는 대비됩니다.
- 사전 자료형은 키와 값의 쌍으로 데이터를 가지면서, 원하는 ‘변경 불가능한(Immutable) 자료형’을 키로 사용 가능합니다.
- 사전 자료형은 해시 테이블을 이용하므로 데이터 조회 및 수정에 있어서 O(1) 의 시간 처리를 할 수 있습니다.
자료의 사용에 있어서 상당히 빠른 타이밍으로 확인이 가능합니다.
- 표로 표현하면 아래의 형태를 구현 한다고 보시면 됩니다.
key value 사과 Apple 바나나 Banana 코코넛 Coconut
사용 방법
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
data_b = {
'홍길동' : 97,
'이순신' : 98
}
print(data)
print(data_b)
if '사과' in data:
print("'사과'를 키로 가지고 있는 데이터가 존재합니다.")
# 실행 결과
# {'사과': 'Apple', '바나나': 'Banana', '코코넛': 'Coconut'}
# {'홍길동': 97, '이순신': 98}
# '사과'를 키로 가지고 있는 데이터가 존재합니다.
문자열을 관리하거나 탐색하는 면에 있어서 리스트보다 훨씬 효율적이고 빠르게 조회를 수행할 수 있습니다.
사전 자료형 관련 메서드
keys()
: 키 데이터만 뽑아서 리스트로 이용할 때values()
: 값 데이터만 뽑아서 리스트로 이용할 때
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'
# 메서드 활용한 사례
key_list = data.keys() # 사전 메서드 로만 진행시 하나의 객체로 취급됩니다.
value_list = data.values()
print(key_list)
print(value_list)
key_list = list(data.keys()) # 리스트 함수를 활용하여 형변환을 할 경우 완전한 리스트로 형 변환이 되게 됩니다.
value_list = list(data.values())
print(key_list)
print(value_list)
# 각 키 값에 따른 값을 하나 씩 출력
for key in key_list:
print(data[key]) # 특정 키를 활용해서 값을 찾아내는 방법입니다.
# 실행 결과
# dict_keys(['사과', '바나나', '코코넛'])
# dict_values(['Apple', 'Banana', 'Coconut'])
# ['사과', '바나나', '코코넛']
# ['Apple', 'Banana', 'Coconut']
# Apple
# Banana
# Coconut
집합 자료형
개념
- 집합은 다음과 같은 특징을 가진 자료형 입니다.
- 중복을 허용하지 않습니다.
- 순서가 없습니다.
- 집합은 리스트 혹은 문자열을 이용해서 초기화 할 수 있고, 이를 위해
set()
함수를 이용합니다. - 혹은 중괄호
{}
안에 각 원소를 콤마(,) 를 기준으로 구분하여 삽입함으로써 초기화 할 수 있습니다. - 데이터 조회 및 수저엥 있어서 O(1)의 시간 처리가 가능합니다.
# 집합 자료형 초기화 방법 1
data = set([1, 1, 2, 3, 4, 5, 5])
print(data)
# 집합 자료형 초기화 방법 2
data = {1, 1, 2, 3, 4, 5, 5}
print(data)
# 실행 결과
# {1, 2, 3, 4, 5}
# {1, 2, 3, 4, 5}
집합 자료형의 연산
- 수학의 집합과 동일하게 집합 연산이 가능합니다.
- 합집합(A⋃B)
- 교집합(A⋂B)
- 차집합(A−B)
a = set([1, 2, 3, 4, 5])
b = set([3, 5, 7, 8, 9])
# 힙집합
print(a | b)
# 교집합
print(a & b)
# 차집합
print(a - b)
# 실행 결과
# {1, 2, 3, 4, 5, 7, 8, 9}
# {3, 5}
# {1, 2, 4}
집합 자료형 관련 함수
data = set([1, 2, 3])
print(data)
# 새로운 원소 추가
data.add(4)
print("add 함수 사용 후 : ", data)
# 새로운 원소 여러개 추가
data.update([5, 6])
print("update 함수 사용 후 : ", data)
# 특정한 값을 갖는 원소 삭제
data.remove(3)
print("remove 함수 사용 후 : ", data)
# 실행 결과
# {1, 2, 3}
# add 함수 사용 후 : {1, 2, 3, 4}
# update 함수 사용 후 : {1, 2, 3, 4, 5, 6}
# remove 함수 사용 후 : {1, 2, 4, 5, 6}
사전 자료형과 집합 자료형의 특징
- 리스트나 튜플은 순서가 있기 때문에 인덱싱을 통한 자료형의 값을 얻을 수 있습니다.
- 이에 비해 사전 자료형, 집합자료형은
순서
의 개념이 없으므로, 인덱싱으로 값을 얻을 순 없습니다. : 사전은 키 혹은 집합 원소를 이용해 O(1) 의 시간 복잡도로 조회할 수 있습니다.