기본 콘텐츠로 건너뛰기

추천 가젯

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

모바일 청첩장 시리즈 1편 · 기획/스택/배포 리액트 + 비트(Vite)로 모바일 청첩장 만들기 — 1편 안녕하세요, 이번에 결혼 준비를 하면서 여자친구와 같이 모바일 청첩장 을 만들고 있어요. 여자친구가 디자인을 해서 전달해주면 제가 개발을 진행하고 있어요. 이 글은 구현기 1편 으로, 전체 흐름과 스택, 배포 구성까지 “부담 없이” 훑어봅니다. (코드는 여러 버전 테스트 중!) 이 글에서 보는 것 왜 SPA 모바일 청첩장인가? 기본 스택 & 폴더 구조 라우팅 선택: HashRouter가 편한 이유 Cloudflare Pages로 자동 배포 현재 진행 중인 UI 버전들(테스트 기록) 1) 왜 SPA 모바일 청첩장인가? 모바일 청첩장은 핵심이 명확해요. 가볍고 빠르고 끊김이 없어야 하고, 사진/지도/일정이 터치에 친화적 이어야 합니다. 그래서 React + Vite 로 싱글 페이지 앱(SPA)을 구성했고, 정적 호스팅(CDN)인 Cloudflare Pages 에 올려 GitHub 푸시 → 자동 배포 까지 한 번에 묶었습니다. UX 팁 · 이미지 WebP, loading="lazy" 기본 · 큰 터치 타깃 · BGM은 “사용자 탭 후” 재생(모바일 정책) 2) 기본 스택 & 폴더 구조 서버는 따로 두지 않았고, 정적 빌드 결과물( dist/ )만 올립니다. 현재 의존성은 아래와 같아요. package.json(요약) { "name": ...

파이썬 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