[파이썬] 스택(Stack)과 큐(Queue)

2022. 1. 6. 15:00·Programming Languages/Python
728x90

1. Stack 스택 자료구조 

선입후출 (First In Last Out) 구조 

stack = []

stack.append(1) # push 를 append()로 구현한다.
stack.append(2)
stack.append(3)
stack.pop()
stack.append(4)

print(stack) # 스택의 가장 밑에 있는 원소부터 출력
print(stack[::-1]) # 스택 가장 위에 있는 원소부터 출력 

<결과>

[1, 2, 4]
[4, 2, 1]

파이썬에서 stack 자료구조를 구현하기 위해서는 이렇게 다른 라이브러리가 필요없이, list 구조에서 append()와 pop()으로 간단히 구현할 수 있다. 

 

2. Queue 큐 자료구조

선입선출 (First In First Out) 구조 , 나중에 온 사람이 나중에 들어가는 공정한 자료구조 

파이썬에서는 collections 모듈에서 제공하는 deque 자료구조를 활용하여 큐를 구현할 수 있다. 

 

from collections import deque

queue = deque() # empty queue declaration

queue.append(1)
queue.append(2)
queue.append(3)
queue.append(4)
queue.popleft() # 맨 처음 큐에 들어온 1이 pop 된다 !
queue.append(100)
print(queue)
queue.reverse() # 순서를 거꾸로 바꿔준다.
print(queue)

 

<결과>

deque([2, 3, 4, 100])
deque([100, 4, 3, 2])

 

학교에서 C로 직접 스택과 큐를 구현할때보다 정말 파이썬은 몇줄이면 구현가능하니까...ㅋㅋㅋㅋㅋ 편하다 !

궁금해서 queue가 empty상태일 때에 popleft()를 하면 파이썬에서는 어떻게 되나 실험해봤다. 

from collections import deque

queue = deque() # empty queue declaration

queue.append(1)
queue.append(2)
queue.append(3)
queue.popleft() # 맨 처음 큐에 들어온 1이 pop 된다 !

print(queue)

queue.popleft() # 2
print(queue)

queue.popleft() # 3
print(queue)

queue.popleft()

 

<결과: 컴파일 에러>

당연하지만 이렇게 empty deque이라고 컴파일 에러가 난다 !

728x90

'Programming Languages > Python' 카테고리의 다른 글

[Python] defaultdict 문법 정리  (0) 2022.09.11
Python 다익스트라 최단경로 알고리즘  (0) 2022.01.31
python bisect, bisect_left, bisect_right  (0) 2022.01.25
[Python] 파이썬 join 함수 (파이썬 문자열 리스트 합치기)  (0) 2022.01.22
python enumerate 의 사용  (0) 2022.01.17
'Programming Languages/Python' 카테고리의 다른 글
  • Python 다익스트라 최단경로 알고리즘
  • python bisect, bisect_left, bisect_right
  • [Python] 파이썬 join 함수 (파이썬 문자열 리스트 합치기)
  • python enumerate 의 사용
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minji's engineering noteData Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • 파이썬
  • AWS
  • 쿠버네티스
  • 리눅스
  • linux
  • Leetcode
  • 운영체제
  • 카카오코딩테스트
  • BFS
  • 스파크
  • EC2
  • Swift
  • Databricks
  • 데이터브릭스
  • 프로그래머스
  • 데이터엔지니어링
  • 백준
  • dp
  • 알고리즘
  • dfs
  • python
  • 데이터엔지니어
  • docker
  • 코딩테스트
  • 백트래킹
  • SPARK
  • ansible
  • 빅데이터
  • Kubernetes
  • 클라우드

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[파이썬] 스택(Stack)과 큐(Queue)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.