기본 콘텐츠로 건너뛰기

추천 가젯

리액트 + 비트(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 바인딩 추가: ...

파이썬 heapq 모듈 완전 정복 📊

Heap icon

파이썬 heapq 모듈 완전 정복 📊

heapq는 리스트를 힙 자료구조로 다뤄 효율적인 최소/최댓값 추출 및 정렬이 가능하게 해줍니다. 특히 우선순위 큐 구현에 매우 유용합니다.

1. 최소 힙 생성 및 기본 사용

import heapq

nums = [5, 1, 8, 3, 2]
heapq.heapify(nums)
print(nums)  # 최소 힙 구조로 변경

print(heapq.heappop(nums))  # 1 (최솟값 추출)
print(heapq.heappop(nums))  # 2

2. 힙에 요소 추가

import heapq

heapq.heappush(nums, 0)
print(nums)  # 0이 힙에 삽입, 루트가 0

3. 최댓값 추출을 위한 힙 변형

import heapq

nums2 = [5,1,8,3,2]
max_heap = [-n for n in nums2]
heapq.heapify(max_heap)
print(-heapq.heappop(max_heap))  # 8

4. 상위 n개/하위 n개 값 추출

import heapq

data = [9,1,7,4,6,3,8]
print(heapq.nlargest(3, data))  # [9,8,7]
print(heapq.nsmallest(2, data)) # [1,3]

5. 힙 정렬 구현

import heapq

def heap_sort(iterable):
    h = []
    for v in iterable:
        heapq.heappush(h, v)
    return [heapq.heappop(h) for _ in range(len(h))]

print(heap_sort([4,1,7,3,9]))  # [1,3,4,7,9]

요약

  • 리스트에 대해 heapify로 최소 힙 구조 생성
  • heappop/heappush로 효율적인 값 추출 및 삽입
  • 부호 반전으로 최대 힙처럼 동작하도록 활용 가능
  • nlargest/nsmallest로 상위/하위 n개 요소 바로 얻기
  • 힙을 이용한 간단한 힙 정렬 함수 구현

댓글

가장 많이 본 글

Icons by Flaticon