기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 2편

모바일 청첩장 시리즈 2편 · R2 갤러리 & Firebase 방명록 Cloudflare R2 · Functions Firebase Firestore 클라우드플레어 R2로 갤러리 저장하고, Firebase로 방명록 달기 안녕하세요, 병민입니다 🙌 1편에서 전체 흐름을 잡았고, 이번엔 사진 업로드/보관 과 방명록 을 연결합니다. 서버는 따로 없고 Cloudflare Pages 를 쓰고 있으니, Pages Functions (= 워커)로 R2에 사전서명 URL을 만들어주고, 프론트에서 그 URL로 바로 업로드하는 구조예요. 방명록은 Firebase DB로 간단·안전하게! 전체 그림 프론트(React) → /api/r2/upload 로 업로드용 URL 요청 → R2에 파일 PUT 프론트(React) → /api/r2/list 로 목록 요청 → 갤러리 렌더 프론트(React) → Firebase SDK로 방명록 작성/조회 1) R2 버킷 & Pages Functions 준비 Cloudflare 대시보드 > R2 > Create bucket (예: wedding-gallery ) 버킷 > Settings > CORS 에서 사이트 도메인 허용(예: https://*.pages.dev , 커스텀 도메인) Pages 프로젝트 > Settings > Functions 에서 R2 바인딩 추가: ...

파이썬 collections.deque 완벽 가이드 📚

파이썬 collections.deque 완벽 가이드 📚

collections.deque는 양쪽 끝에서 데이터를 빠르게 추가/삭제할 수 있는 자료구조로, 리스트보다 효율적인 큐(queue)나 스택(stack) 구현에 자주 사용됩니다.

파이썬 deque 아이콘

✅ deque 기본 사용법

리스트와 비슷하지만, 양쪽 끝에서 appendpop 연산이 O(1) 시간에 수행됩니다.

from collections import deque

# 빈 deque 생성
dq = deque()

# 오른쪽 끝에 추가
dq.append(10)
dq.append(20)

# 왼쪽 끝에 추가
dq.appendleft(5)

print(dq)  # deque([5, 10, 20])

# 오른쪽 끝에서 꺼내기
print(dq.pop())  # 20

# 왼쪽 끝에서 꺼내기
print(dq.popleft())  # 5

✅ 큐(Queue) 구현

선입선출(FIFO) 방식의 큐를 간단하게 구현할 수 있습니다.

tasks = deque()

tasks.append("작업1")
tasks.append("작업2")

print(tasks.popleft())  # 작업1
print(tasks.popleft())  # 작업2

✅ 스택(Stack) 구현

후입선출(LIFO) 방식의 스택도 지원됩니다.

stack = deque()

stack.append("A")
stack.append("B")

print(stack.pop())  # B
print(stack.pop())  # A

✅ rotate로 원형 큐 구현

rotate 메서드를 이용해 원형 큐처럼 회전시킬 수 있습니다.

dq = deque([1, 2, 3, 4, 5])

# 오른쪽으로 2칸 회전
dq.rotate(2)
print(dq)  # deque([4, 5, 1, 2, 3])

# 왼쪽으로 1칸 회전
dq.rotate(-1)
print(dq)  # deque([5, 1, 2, 3, 4])

✅ 최대 길이 지정 (maxlen)

maxlen을 지정하면 자동으로 오래된 데이터가 제거됩니다.

dq = deque(maxlen=3)

dq.append(10)
dq.append(20)
dq.append(30)
dq.append(40)

print(dq)  # deque([20, 30, 40], maxlen=3)

⚡ 언제 deque를 사용할까?

  • 리스트보다 양끝 추가/삭제가 훨씬 빠를 때
  • 큐(Queue)나 스택(Stack) 자료구조 구현
  • 슬라이딩 윈도우나 원형 버퍼 구조

요약

  • deque는 리스트보다 효율적인 양방향 큐 자료구조입니다.
  • append, pop, rotate, maxlen 등 강력한 기능을 제공합니다.
  • 큐, 스택, 원형 큐 등 다양한 패턴에 활용할 수 있습니다.

Icons by Flaticon

댓글

가장 많이 본 글

Icons by Flaticon