고양이와 코딩하기

자료구조 - Stack 알아보기 본문

D E V E L O P E R 💻/Today I Learned

자료구조 - Stack 알아보기

dj-1087 2021. 11. 20. 16:11
반응형

개념 정리
코드 구현(with Python)
참고 자료


Stack - 스택

LIFO(Last In First Out)
마지막에 넣은 데이터가 가장 먼저 나오는 구조로 데이터를 저장하는 형식

*컴퓨터 내부의 프로세스 구조의 함수 동작 방식

장점과 단점

장점

  • 데이터의 빠른 입력/추출

단점

  • 맨 위(뒤)의 데이터만 접근 가능

시간 복잡도

  • 데이터 입력/추출: O(1)

스택 기능

  • push: 마지막 순번으로 데이터 입력
  • pop: 마지막 데이터 추출


코드 구현

stack_list = list()

def push(data):
    stack_list.append(data)

def pop():
    data = stack_list[-1]
    del stack_list[-1]
    return data

Test - push()

for i in range(10):
    push(i)

print("stack size:", len(stack_list))
print("stack data:", stack_list)
stack size: 10
stack data: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Test - pop()

data = pop()

print("pop data:", data)
print("stack size:", len(stack_list))
print("stack data:", stack_list)
pop data: 9
stack size: 9
stack data: [0, 1, 2, 3, 4, 5, 6, 7, 8]

+ 파이썬 리스트의 내장 함수를 사용할 경우

# init stack
stack_list = list()
print("Initialize stack")
print("stack size:", len(stack_list))
print()

# push()
for i in range(10,0,-1):
    stack_list.append(i)

print("After Push")
print("stack size:", len(stack_list))
print()

# pop
data = stack_list.pop()

print("After Pop")
print("pop data:", data)
print("stack size:", len(stack_list))
Initialize stack
stack size: 0

After Push
stack size: 10

After Pop
pop data: 1
stack size: 9


참고 자료

반응형
Comments