HelloMinchan
처음처럼
HelloMinchan
LinkedIn
전체 방문자
오늘
어제
  • 분류 전체보기 (306)
    • Backend (4)
      • NestJS (1)
      • Express (1)
      • Spring (2)
    • Infrastructure (1)
      • AWS (1)
    • Frontend (1)
      • Next.js (1)
    • Language & Runtime (4)
      • Java (2)
      • Node.js (2)
    • Computer Science (8)
      • Computer Networks (3)
      • Operating Systems (4)
      • OOP (1)
    • 독서 (4)
      • 데이터 중심 애플리케이션 설계 (3)
      • 객체지향의 사실과 오해 (1)
    • 회고 (4)
      • Project (2)
      • Career (2)
    • Deprecated (280)

채널

  • GitHub
  • LinkedIn

최근 글

태그

  • Database
  • 백준Python
  • 알고스팟Python
  • back-end
  • 백엔드
  • Algospot
  • 백준Go
  • front-end
  • 데이터베이스
  • programmers
  • 코딩
  • Baekjoon Online Judge
  • 프로그래머스C++
  • 백준
  • 백준C++
  • 개발자
  • 알고스팟
  • 프로그래머스
  • 프로그래밍
  • 프로그래머스Python

최근 댓글

인기 글

hELLO
HelloMinchan

처음처럼

[Python] deque 사용법
Deprecated

[Python] deque 사용법

2020. 3. 30. 21:24

Copyright ©2001-2020. Python Software Foundation

[Python] deque 사용법

(글쓴날 : 2020.03.30)

 


* 이 글은 글쓴이가 공부한 내용을 정리하며 올리는 글입니다.

* Python3를 기준으로 작성되었습니다.


 

 

Python deque 사용법


1) deque이란?

deque이란 collections 모듈에 속해있으며 단방향 흐름이던 기존 Queue 자료구조와 달리 앞과 뒤(왼쪽과 오른쪽) 양방향에서 삽입 삭제를 할 수 있는 자료구조입니다. (한글 발음은 덱입니다.)

 

저의 경우, 알고리즘 문제를 풀기 위해 큐 자료구조를 쓸 때 Python의 Queue를 사용하려다 보니 queue.Queue()의 경우 멀티스레딩을 위한 큐여서 시간 효율이 좋지 않아 deque을 찾게 되었습니다.

(보통 BOJ, LeetCode 같은 PS에서 Python으로 큐를 사용해야 할 경우 deque을 큐 대신 사용합니다.)


2) deque 사용법

(1) collections 모듈 및 deque import

1
from collections import deque

(2) deque 생성

1
2
dq = deque()
print(dq)  # print결과 : deque([])

(3) append() : deque 뒤(오른쪽)에 값 추가

1
2
3
dq.append(5)
dq.append(6)
print(dq)  # print결과 : deque([5, 6])

(4) appendleft() : deque 앞(왼쪽)에 값 추가

1
2
3
dq.appendleft(4)
dq.appendleft(3)
print(dq)  # print결과 : deque([3, 4, 5, 6])

(5) extend() : deque 뒤(오른쪽)에 iterable 객체를 순환하며 값들을 차례로 추가

1
2
dq.extend([7, 8, 9])
print(dq)  # print결과 : deque([3, 4, 5, 6, 7, 8, 9])

(6) extendleft() : deque 앞(왼쪽)에 iterable 객체를 순환하며 값들을 차례로 추가

(주의! 객체의 마지막 값부터 deque에 추가됩니다.)

1
2
dq.extendleft([2, 1, 0])
print(dq)  # print결과 : deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

(7) remove() : deque 안의 특정 값 삭제

1
2
3
4
dq.remove(7)
dq.remove(8)
dq.remove(9)
print(dq)  # print결과 : deque([0, 1, 2, 3, 4, 5])

(8) pop() : deque 뒤(오른쪽)의 값 삭제 후 반환

1
2
3
popValue = dq.pop()
print(popValue)  # print결과 : 6
print(dq)  # print결과 : deque([0, 1, 2, 3, 4, 5])

(9) popleft() : deque 앞(왼쪽)의 값 삭제 후 반환

1
2
3
popValue = dq.popleft()
print(popValue)  # print결과 : 0
print(dq)  # print결과 : deque([1, 2, 3, 4, 5])

(10) rotate() : deque 안의 값들 회전

(rotate() 함수의 인자로 전달한 값만큼 회전하며 음수를 전달하면 거꾸로 회전합니다.)

1
2
3
4
5
6
7
print(dq)  # print결과 : deque([1, 2, 3, 4, 5])
dq.rotate(1)
print(dq)  # print결과 : deque([5, 1, 2, 3, 4])
dq.rotate(-1)
print(dq)  # print결과 : deque([1, 2, 3, 4, 5])
dq.rotate(-1)
print(dq)  # print결과 : deque([2, 3, 4, 5, 1])

 

 


 

 

여기까지, Python의 deque 사용법에 대하여 알아봤습니다.

감사합니다!

저작자표시 비영리 변경금지 (새창열림)

'Deprecated' 카테고리의 다른 글

[Baekjoon Online Judge] 백준 2606번 바이러스(Python)  (0) 2020.03.31
[Baekjoon Online Judge] 백준 2178번 미로 탐색(Python)  (0) 2020.03.30
[Baekjoon Online Judge] 백준 1697번 숨바꼭질(Python)  (0) 2020.03.30
[Baekjoon Online Judge] 백준 15663번 N과 M (9)(Python)  (0) 2020.03.30
[Baekjoon Online Judge] 백준 4963번 섬의 개수(Python)  (0) 2020.03.29
    'Deprecated' 카테고리의 다른 글
    • [Baekjoon Online Judge] 백준 2606번 바이러스(Python)
    • [Baekjoon Online Judge] 백준 2178번 미로 탐색(Python)
    • [Baekjoon Online Judge] 백준 1697번 숨바꼭질(Python)
    • [Baekjoon Online Judge] 백준 15663번 N과 M (9)(Python)
    HelloMinchan
    HelloMinchan
    Though you should not fear failure, You should do your very best to avoid it.

    티스토리툴바