
[백준] 그리디 알고리즘 <1>
1. Greedy 알고리즘 설명 그리디 알고리즘은 매 순간 최적의 선택을 하는 결정이 전체의 관점에서도 최적의 선택인 알고리즘이다. 예를 들어 A - > B → C → D 의 루트로 A에서 출발해 D로 도착하려 할 때, A → B, B → C, C → D의 각각의 루트를 언제나 가장 짧은 경로로 이동해야만 전체 경로에서도 가장 짧은 거리가 된...
1. Greedy 알고리즘 설명 그리디 알고리즘은 매 순간 최적의 선택을 하는 결정이 전체의 관점에서도 최적의 선택인 알고리즘이다. 예를 들어 A - > B → C → D 의 루트로 A에서 출발해 D로 도착하려 할 때, A → B, B → C, C → D의 각각의 루트를 언제나 가장 짧은 경로로 이동해야만 전체 경로에서도 가장 짧은 거리가 된...
1. 데코레이터 Decorator 파이썬 관련 코드를 보다 보면 가끔 등장하는 모양이 있다. @deco def hello(): print("안녕하세요") 이 건방진 골뱅이(@)는 어디에 쓰이는 것일까? 이름에 걸맞게 해당 기능은 함수를 장식하는 기능을 한다. 여기서 장식한다는 뜻은 @ 이하에 쓰일 함수를 직접 수정하지 않고 추가적인 기능...
이전글 [Docker] 도커<1> 미리 작성된 Dockerfile을 토대로 Docker image를 build 하므로 중요한 과정이다. 이번 게시글에선 Docker image 빌드 시 사용되는 명령어에 대해 정리해보았다. FROM base 이미지를 생성하는 명령어 주로 Dockerfile 최상단에...
1. python-dotenv python_dotenv는 파이썬에서 어플리케이션의 환경 변수를 쉽게 관리할 수 있게 해주는 패키지이다. 1.1 특징 .env 파일만 바꾼다면 다양한 환경 변수 적용 가능 환경변수를 소스코드에서 분리하기 때문에 보안 강화 (.gitignore 사용 가능) 환경 변수가 어디 있는지 한 눈에 확인 가능 ...
1. 도커 Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. Docker는 애플리케이션을 컨테이너라는 하나의 유닛으로 만들고, 이 안에는 사용된 라이브러리, 작성된 코드, 시스템 도구, 런타임 등 애플리케이션을 실행하는데 필요한 모든 것이 담겨있다. 운영체제에 상관없이 사용할 수 있고, 가상머신(VM)...
1. 우선순위 큐 큐(Queue) 란 가장 먼저 들어온 데이터가 제일 먼저 빠지는 FIFO(First In First Out) 형식의 자료구조이다. 큐에서는 데이터를 pop 할때 가장 먼저 들어온 순서 기준으로 빠지게 되지만, 우선순위 큐에서는 들어온 순서가 아닌, 가장 우선순위가 높은 데이터부터 빠지게 된다. 표로 정리하면 다음과 같다. ...
0. 이전 글 보안 - 1 보안 - 2 보안 - 3 공식문서 JWT 토큰에 대한 설명 앞에서 작성했던 모든 개념을 활용해 JWT 토큰과 비밀번호 해싱을 사용한 안전한 어플리케이션을 만들어보자. 1. Hash 및 비밀번호 확인 from passlib.context import CryptContext pwd_context = CryptCo...
1. JWT란? JWT는 JSON Web Token의 줄임말이다. JSON object를 네트워크를 통해 안전하게 전달하기 위해 설계됐다. JWT가 사용되는 가장 유명한 분야는 로그인(인증)이다. 2. JWT의 구조. JWT는 3가지 부분으로 이루어져 있다. HEADER PAYLOAD SIGNATURE 그리고 이 세가지 부분을...
0. 이전 글 보안 - 1 보안 - 2 공식문서 이전 글들에서 설명했던 코드들을 활용해 유저 로그인, 유저 조회 기능을 완성해보자. 1. username 과 password 얻기 FastAPI에서 제공하는 데이터 폼을 사용해 username과 password를 얻어보자. FastAPI에선 OAuth2PasswordRequestFrom 을 ...
공식 문서 앞서 기본적으로 작성했던 코드에 몇 개의 코드를 덧붙여 현재 사용자를 가져오는 코드를 작성해보자. 1. 유저 모델 생성 from pydantic import BaseModel class User(BaseModel): username: str email: str | None = None full_name: str ...