[자료구조] [python] Stack(스택)

2024. 9. 23. 08:51·Study/자료구조

 

LIFO (후입 선출)구조를 따르는 자료 구조 

즉, 나중에 삽입된 데이터가 가장 먼저 꺼내지는 구조.

 

스택 연산 종류

1. push() : 스택에 원소를 추가.

2. pop() : 스택 가장 위에 있는 원소를 삭제하고 그 원소를 반환한다.

3. peek() : 스택 가장 위에 있는 원소를 반환한다.  * python에서는 stack[-1]을 사용!

4. isEmpty() : 스택이 비어있다면 1, 아니면 0을 반환한다.

5. clear() : 강제 초기화, 비어있는지 여부 확인

6. isFull() : 가득 찼는지 여부 확인

7. size(): 스택에 저장되어 있는 데이터 개수 반환

 

 

**파이썬에서 스택 사용할 때, 라이브러리 필요없음.


예시

stack = []

# 스택에 데이터 삽입
stack.append(1)
stack.append(2)
stack.append(3)

# 스택에서 데이터 꺼내기
print(stack.pop())  # 3
print(stack.pop())  # 2
print(stack.pop())  # 1

 

n = int(input())

stack = []

for i in range(n):

    command = sys.stdin.readline().split()

    order = command[0]

    if order == 'push':
        data = command[1]
        stack.append(data)

    elif order == 'pop':
        if len(stack) == 0:
            print(-1)

        else:
            print(stack[-1])
            stack.pop(-1)

    elif order == 'size':
        print(len(stack))

    elif order == 'empty':

        if len(stack) == 0:
            print(1)

        else:
            print(0)

    elif order == 'top':
        if len(stack) == 0:
            print(-1)

        else:
            print(stack[-1])

collection.deque 라이브러리 활용

리스트보다 양쪽에서의 삽입/삭제가 효율적

#리스트로 구현
stack = []

stack.append(1)  # 삽입
stack.append(2)

print(stack.pop())  # 반환 및 삭제

#deque로 구현
from collections import deque

stack = deque()

stack.append(1)  # 삽입
stack.append(2)

print(stack.pop())  # 반환 및 삭제

 

'Study > 자료구조' 카테고리의 다른 글

[자료구조][python]덱(deque)  (0) 2024.09.30
'Study/자료구조' 카테고리의 다른 글
  • [자료구조][python]덱(deque)
#코딩 공부
#코딩 공부
tildacoding 코딩 공부
  • #코딩 공부
    tildacoding
    #코딩 공부
  • 전체
    오늘
    어제
  • 글쓰기 관리자
  • Personal

    • 홈
    • 태그
    • 방명록
  • link

    • GITHUB
    • 분류 전체보기 (51)
      • Dev (12)
        • python (0)
        • 웹크롤링 (2)
        • 머신러닝 (3)
        • 딥러닝 (4)
        • 언어지능 딥러닝 (2)
        • SQL (1)
        • Spring (0)
      • 코딩테스트 (16)
        • 백준 (3)
        • 프로그래머스 (7)
        • 기타 문제 (2)
        • 코딩테스트를 위한 정리 (4)
      • Study (4)
        • 알고리즘 (2)
        • 자료구조 (2)
      • 대외활동 (18)
        • 에이블스쿨 (18)
        • 공모전 (0)
  • 공지사항

    • 루틴 skrrrrr
  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
#코딩 공부
[자료구조] [python] Stack(스택)
상단으로

티스토리툴바