○ 자료구조(DATA STRUCTURE)란?
- 데이터를 표현하고 효율적으로 관리 및 처리하기 위한 구조
- 적절한 데이터 구조는 메모리를 절약할 수도 있고, 실행시간도 단축 시킬 수 있다.
● 스택 예제(선입후출 구조)
stack = []
# 삽입(5) - 삽입(7) - 삽입(1) - 삽입(4) - 삭제() - 삽입(2) - 삽입(3) - 삭제()
stack.append(5)
stack.append(7)
stack.append(1)
stack.append(4)
stack.pop()
stack.append(2)
stack.append(3)
stack.pop()
print(stack) # 최하단 원소부터 출력
print(stack[::-1]) # 최상단 원소부터 출력
[5, 7, 1, 2]
[2, 1, 7, 5]
● 큐 예제(선입선출 구조)
from collections import deque
# 큐를 쓰기 위해서는 deque 라이브러리 사용해야 함
que = deque()
# 삽입(5) - 삽입(7) - 삽입(1) - 삽입(4) - 삭제() - 삽입(2) - 삽입(3) - 삭제()
que.append(5)
que.append(7)
que.append(1)
que.append(4)
que.popleft()
que.append(2)
que.append(3)
que.popleft()
print(que) # 들어온 순서대로 출력
que.reverse()
print(que) # 나중에 들어온 순서대로 출력
deque([1, 4, 2, 3])
deque([3, 2, 4, 1])
※ deque는 스택과 큐의 장점을 모두 채택한것. 데이터를 넣고 빼는 속도가 리스트 자료형에 비해 빠르다. deque 객체를 리스트 자료형으로 변형할려면 list(deque)를 하면 된다.
▶ 오버플로 : 자료구조가 수용할 수 있는 데이터의 크기를 넘어서 삽입 연산을 수행할 때 발생
▶ 언더플로 : 자료구조에서 데이터가 없는 상태에서 삭제 연산을 수행하면 발생
'CS' 카테고리의 다른 글
배열과 해시테이블(Array and HashTable) (0) | 2021.07.23 |
---|---|
2진법, 정보의 표현 (0) | 2021.07.22 |