Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 밑바닥부터 시작하는 딥러닝
- 네트워크 관리사
- 파이썬
- 기본 정렬
- 코딩테스트
- Machine learning
- 알고리즘
- Algorithm
- Django
- deep learning
- 자격증
- 네트워크 자격증
- 실기
- network
- 딥러닝
- ICQA
- 프로토콜
- IPV4
- Python
- 네트워크
- 서브넷마스크
- Dynamic Programming
- Protocol
- Windows Server
- dns
- 네트워크 관리사 2급
- FTP
- 패스트캠퍼스
- 자료구조
- 머신러닝
Archives
- Today
- Total
쳉지로그
[자료구조 이론] 스택(Stack) 본문
- 데이터를 제한적으로 접근할 수 있는 구조
- 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조
- 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조(LIFO)
- 큐: FIFO 정책
- 스택: LIFO 정책
- 장점
- 구조가 단순해서, 구현이 쉽다.
- 데이터 저장/읽기 속도가 빠르다.
- 단점 (일반적인 스택 구현시)
- 데이터 최대 갯수를 미리 정해야 한다.
- 파이썬의 경우 재귀 함수는 1000번까지만 호출이 가능함
- 저장 공간의 낭비가 발생할 수 있음
- 미리 최대 갯수만큼 저장 공간을 확보해야 함
- 데이터 최대 갯수를 미리 정해야 한다.
(참고)
- 대표적인 스택의 활용: 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
- push(): 데이터를 스택에 넣기
- pop(): 데이터를 스택에서 꺼내기
- 스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적임. 이 경우, 위에서 열거한 단점이 있을 수 있음
# 재귀 함수
def recursive(data):
if data < 0:
print ("ended")
else:
print(data)
recursive(data - 1)
print("returned", data)
# 파이썬 리스트 기능에서 제공하는 메서드로 스택 사용해보기
### append(push), pop
data_stack = list()
data_stack.append(1)
data_stack.append(2)
data_stack # [1, 2]
data_stack.pop() # 2
# 리스트 변수로 스택을 다루는 pop, push 기능 구현해보기
# pop, push 함수 사용하지 않고 직접 구현해보기
stack_list = list()
def push(data):
stack_list.append(data)
def pop():
data = stack_list[-1]
del stack_list[-1]
return data
for i in range(10):
push(i)
stack_list # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
pop() # 9
'코딩테스트 > 자료구조 이론' 카테고리의 다른 글
[자료구조 이론] 시간 복잡도 (0) | 2021.05.10 |
---|---|
[자료구조 이론] 더블 링크드 리스트(Doubly Linked List) (0) | 2021.05.09 |
[자료구조 이론] 링크드 리스트(Linked List) (0) | 2021.04.16 |
[자료구조 이론] 큐(Queue) (0) | 2021.04.14 |
[자료구조 이론] 배열(Array) (0) | 2021.04.14 |
Comments