[Python] 데크(Deque) 개념과 활용

2024. 5. 15. 19:19·Python

데크(Deque)란?

큐(queue)는 선입선출(FIFO) 방식으로 작동하며, 스택(Stack)은 후입선출(LIFO) 방식으로 작동한다. 큐와 스택이 합쳐져 양방향에서 Push와 Pop을 할 수 있는 자료구조가 데크(Deque)이다. 앞, 뒤 방향에서 요소(element)를 추가하거나 제거할 수 있다. 큐와 스택은 반대쪽에 존재하는 요소를 Pop 하려면 O(n)의 시간이 필요하지만, 데크를 사용하면 어느 방향이든 O(1)의 시간으로 연산을 수행할 수 있다.

스택(Stack)과 큐(Queue) 작동 방식
데크(Deque) 작동 방식

파이썬 라이브러리 deque

파이썬에서는 데크를 라이브러리로 사용할 수 있다. 아래의 공식문서에서 자세한 설명과 예시를 확인해 볼 수 있다. 여기에는 알고리즘 문제를 해결할 때 필요한 연산을 정리하려고 한다.

 

collections — Container datatypes

Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple.,,...

docs.python.org

deque 선언

from collections import deque

deq = deque()

deque 연산

# 왼쪽에 요소 추가
deq.appendleft(10)

# 오른쪽에 요소 추가
deq.append(0)

# 왼쪽 요소 제거 및 반환
deq.popleft()

# 오른쪽 요소 제거 및 반환
deq.pop()

# 해당 인덱스에 요소 삽입
deq.insert(3)

# 해당 요소를 찾아 삭제
deq.remove(30)

deque 인덱스 접근

데크도 리스트처럼 인덱스로 접근과 값 변경이 가능하다.

q = deque('hello')
q[2] = 'o'
print(q)

# result
>> deque(['h', 'e', 'o', 'l', 'o'])

Reference

https://velog.io/@dltmdrl1244/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-deque

https://velog.io/@oeueoo/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Stack-Queue

https://chaewonkong.github.io/posts/python-deque.html

'Python' 카테고리의 다른 글

[Python] 특정, 다중 조건으로 리스트 정렬하기  (0) 2024.11.04
[Python] 셰이프 파일(shp) 데이터의 위도, 경도 및 주소 추출하기  (1) 2024.09.27
[Python] 한 줄에 여러 개 입력받기(map, split)  (2) 2024.05.17
[Python] enumerate() 함수 개념과 활용  (1) 2024.03.30
[Python] 람다(Lambda) 함수 개념과 활용  (0) 2024.03.28
'Python' 카테고리의 다른 글
  • [Python] 셰이프 파일(shp) 데이터의 위도, 경도 및 주소 추출하기
  • [Python] 한 줄에 여러 개 입력받기(map, split)
  • [Python] enumerate() 함수 개념과 활용
  • [Python] 람다(Lambda) 함수 개념과 활용
기억에 남는 블로그 닉네임
기억에 남는 블로그 닉네임
  • 기억에 남는 블로그 닉네임
    얕게, 깊게
    기억에 남는 블로그 닉네임
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 분류 전체보기
      • Data Engineering
        • Airflow
        • 빅데이터
        • 자동화
        • 기타
      • Infra
        • AWS
        • Terraform
        • [인프라 구축기] Terraform 활용 AWS ..
      • CS
        • 자료구조
        • 알고리즘
        • 네트워크
        • 데이터베이스
        • 이것이 취업을 위한 코딩 테스트다 with 파이썬
      • Python
      • Web
      • Git
      • 기타
        • 취업 & 진로
        • 회고록
        • 기타
      • 프로젝트 단위 공부
        • [부스트코스] DataLit : 데이터 다루기
        • [개인 프로젝트] 공모전 크롤링
        • [개인 프로젝트] FC Online 공식 경기 분..
        • 프로젝트 개선 방안
      • [프로그래머스] 데이터 엔지니어링 데브코스 3기
        • TIL(Today I Learn)
        • 숙제
        • 기타
      • 알고리즘 연습
        • 프로그래머스
        • 백준
  • 링크

    • 깃허브
    • 링크드인
    • 벨로그
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기억에 남는 블로그 닉네임
[Python] 데크(Deque) 개념과 활용
상단으로

티스토리툴바