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

집합 자료형

개념

  • 집합은 다음과 같은 특징을 가진 자료형 입니다.
    1. 중복을 허용하지 않습니다.
    2. 순서가 없습니다.
  • 집합은 리스트 혹은 문자열을 이용해서 초기화 할 수 있고, 이를 위해 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) 의 시간 복잡도로 조회할 수 있습니다.

🧑🏻‍💻 알고리즘 박살내기 시리즈🧑🏻‍💻