Python 18

투 포인터 알고리즘 (Two Pointer Algorithm)

개요투 포인터(Two Pointer) 알고리즘은 두 개의 포인터를 이용하여 배열 또는 리스트를 탐색하는 기법입니다. 일반적으로 정렬된 배열에서 특정한 값을 찾거나, 부분 배열(서브 배열)의 특징을 확인할 때 사용됩니다.이 알고리즘을 활용하면 O(N) 또는 O(N log N) 수준의 시간 복잡도로 문제를 해결할 수 있으며, 브루트 포스(Brute Force)보다 훨씬 효율적입니다.투 포인터 알고리즘의 종류1. 시작점-끝점 (Two Pointer for Interval)✅ 연속된 구간(부분 배열, 서브 배열)을 탐색하는 경우✅ 슬라이딩 윈도우(Sliding Window)와 함께 사용 가능✅ 예제: 연속된 수들의 합이 특정 값을 만족하는 경우 찾기2. 양 끝에서 중앙으로 (Two Pointer from Bot..

Python/알고리즘 2025.03.10

정렬 알고리즘 (Sorting Algorithm)

개요정렬 알고리즘(Sorting Algorithm)은 데이터 집합을 특정 기준(예: 오름차순 또는 내림차순)으로 정렬하는 알고리즘입니다. 정렬은 검색, 탐색, 데이터 분석 등의 다양한 컴퓨터 과학 분야에서 필수적인 작업입니다. 정렬 알고리즘은 크게 비교 기반 정렬(Comparison Sort) 과 비교 없는 정렬(Non-Comparison Sort) 로 나눌 수 있습니다.1. 비교 기반 정렬 (Comparison Sort)비교 기반 정렬 알고리즘은 요소 간의 크기를 비교하여 정렬하는 방식입니다. 대표적인 비교 기반 정렬 알고리즘에는 버블 정렬, 선택 정렬, 삽입 정렬, 병합 정렬, 퀵 정렬, 힙 정렬 등이 있습니다.1.1 버블 정렬 (Bubble Sort)알고리즘 개요: 인접한 두 개의 원소를 비교하여 ..

Python/알고리즘 2025.03.10

이분 탐색(Binary Search) 알고리즘

개요이분 탐색(Binary Search)은 정렬된 배열에서 특정 값을 찾을 때 사용하는 효율적인 탐색 알고리즘이다.탐색 범위를 절반씩 줄여나가면서 값을 찾기 때문에, 시간 복잡도는 $O(\log n)$ 으로 매우 빠른 속도를 보인다.동작 원리배열이 정렬되어 있어야 한다.배열의 가운데 값(mid) 을 선택한다.찾고자 하는 값과 가운데 값을 비교한다.찾고자 하는 값이 가운데 값보다 작으면 왼쪽 부분을 탐색한다.찾고자 하는 값이 가운데 값보다 크면 오른쪽 부분을 탐색한다.찾고자 하는 값이 가운데 값과 같으면 탐색을 종료한다.위 과정을 반복하면서 범위를 절반씩 줄여 나간다.구현 방법이분 탐색은 크게 두 가지 방식으로 구현할 수 있다.반복문(Iterative) 방식재귀(Recursive) 방식1. 반복문(Iter..

Python/알고리즘 2025.03.10

완전탐색 알고리즘 (Exhaustive Search)

개요완전탐색 알고리즘은 가능한 모든 경우의 수를 모두 탐색하여 문제의 해답을 찾는 방법입니다. 이러한 접근 방식은 Brute Force라고도 불리며, 직관적이고 구현이 간단하지만, 경우의 수가 많아질수록 시간과 자원 소모가 크게 증가하는 단점이 있습니다.완전탐색 기법의 종류완전탐색을 구현하는 데에는 여러 가지 기법이 활용됩니다:1. 단순 Brute Force 기법반복문과 조건문을 통해 가능한 모든 경우를 직접 확인하는 방법입니다. 예를 들어, 4자리 암호로 구성된 자물쇠를 풀기 위해 0000부터 9999까지 모든 조합을 시도하는 것이 이에 해당합니다.def brute_force_password(): for i in range(10000): attempt = f"{i:04}" ..

Python/알고리즘 2025.03.10

그리디 알고리즘 (Greedy Algorithm)

📌 개요그리디 알고리즘(Greedy Algorithm)은 매 순간 최적이라고 생각되는 선택을 하는 방식으로 문제를 해결하는 알고리즘입니다.일반적으로 "탐욕적 기법" 이라고도 하며, 지역적으로 가장 좋은 선택을 하면 결국 전체적으로도 최적의 해를 구할 수 있다는 가정을 기반으로 합니다.✅ 그리디 알고리즘의 핵심 개념 현재 단계에서 최선의 선택을 하면 전체적으로도 최선이 될 것이라는 가정결과적으로 전체 최적해(Optimal Solution)에 도달할 수 있어야 함일반적으로 정렬(Sorting)과 함께 사용되는 경우가 많음📌 그리디 알고리즘의 특징✅ 장점빠른 실행 속도 → 보통 O(N log N) 이하의 복잡도를 가짐 (정렬이 필요한 경우 O(N log N))단순한 구현 → 단계별로 최선의 선택을 하기 ..

Python/알고리즘 2025.03.10

Middleware

개요FastAPI에서 미들웨어(Middleware)는 요청(Request)과 응답(Response) 사이에 실행되는 함수 또는 클래스입니다. 이를 통해 요청 처리 전에 또는 응답 반환 전에 특정 작업을 수행할 수 있습니다. 미들웨어는 로깅, 인증, 요청 수정, 응답 헤더 추가 등 다양한 용도로 사용됩니다.이 문서에서는 FastAPI의 미들웨어에 대해 자세히 설명하고, 사용 예제를 제공합니다.미들웨어 동작 원리요청 흐름: 클라이언트가 서버로 요청을 보낼 때 미들웨어가 요청을 가로채고, 필요한 처리를 수행한 후 애플리케이션으로 요청을 전달합니다.응답 흐름: 애플리케이션에서 응답이 생성된 후 미들웨어가 응답을 가로채고, 필요한 처리를 수행한 후 클라이언트로 반환합니다.미들웨어 추가하기FastAPI에서 미들웨어..

Python/fastapi 2025.01.14

SQLAlchemy 사용법

## 개요SQLAlchemy는 파이썬의 SQL Toolkit 및 Object Relational Mapping(ORM) 라이브러리입니다. 데이터베이스 작업을 단순화하고 Pythonic하게 데이터베이스를 다룰 수 있도록 도와줍니다.---## 주요 구성 요소1. **Engine**: 데이터베이스와의 연결을 관리합니다.    2. **Session**: ORM에서 트랜잭션을 관리하고, 데이터베이스 작업을 수행하는 주요 인터페이스입니다.    3. **Declarative Base**: ORM에서 사용하는 클래스를 정의하기 위한 기반 클래스입니다.    4. **Query**: ORM에서 데이터를 조회하는 데 사용됩니다.    ---## 기본 사용 흐름### 1. 설치```pip install sqlalchem..

Python/fastapi 2025.01.08

Alembic 사용법

개요Alembic은 SQLAlchemy 기반의 데이터베이스 마이그레이션 도구입니다. 데이터베이스 스키마를 버전 관리하고, 애플리케이션의 변경 사항에 따라 데이터베이스를 업데이트할 수 있습니다.주요 구성 요소Environment: Alembic 설정 및 스크립트를 포함하는 디렉터리.Migration Script: 데이터베이스 스키마 변경 내역이 기록된 Python 스크립트.Version Table: 현재 데이터베이스 버전을 추적하는 테이블.기본 사용 흐름1. 설치pip install alembic2. Alembic 초기화alembic init alembic이 명령은 alembic 디렉터리를 생성하고 기본 설정 파일(alembic.ini)을 만듭니다.3. 설정 파일 수정alembic.ini 파일에서 데이터베..

Python/fastapi 2025.01.08
728x90
반응형