전체 글 127

FastAPI + Pyenv + mypy + black

[FastAPI](https://fastapi.tiangolo.com/ko/) 공식 닥스가 한글로 깔끔하네 캡스톤에서 진행한 내용이다. 세팅 가상환경 : pyenv타이핑 : mypy파이썬 버전 : 3.10.13포매터 : black requirements.txt로 라이브러리 관리도 진행한다. # 먼저 가상환경 세팅하기 - pyenv 블로그를 참조했다. ### 설치 `brew install pyenv` 설치 후 쉘 설정 파일을 수정해야한다. 나의 경우에는 ~/.zshrc ```export PATH="$HOME/.pyenv/bin:$PATH"# pyenv가 설치되어 있다면, 현재 쉘에 대한 pyenv 초기화 스크립트를 실행if command -v pyenv 1>/dev/null 2>&1; then    eva..

M1 Mac PostgreSQL 설치하기

[postgresql] - 01. Mac M1 환경에서 설치 및 세팅하기(dbeaver) [postgresql] - 01. Mac M1 환경에서 설치 및 세팅하기(dbeaver) feelincoding.github.io위 링크를 참고했다.1. postgresql1.1 homebrew로 설치하기$ brew install postgresql1.2 postgresql 실행하기$ brew services start postgresql1.3 postgresql 접속하기$ psql postgres1.4 [postgresql 내부에서] 로컬 개발을 위한 계정 생성 및 권한 추가postgres라는 이름의 계정을 생성하고 비밀번호는 postgres로 설정CREATE ROLE postgres WITH LOGIN PASSW..

구현 진짜 힘들다.... (#17144 미세먼지 안녕!)

#17144 미세먼지 안녕! https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 토요일에 시도했다가 포기하고 죽어있었다. 뭔가 잘못 구현한 부분이 있었는데 눈에 보이지 않았기 때문이다. 하지만 해결해냈다. 문제는 다음과 같았다. 먼지 데이터를 조금 더 효율적으로 관리하고 싶었다. 그래서 먼지의 위치를 저장한 리스트를 만들었었는데 공기청정기가 작동하게되면 먼지의 위치가 바뀐다. 이걸 반영을 안해줬기 때문에 문제가 발생했다. 이걸 파악한 뒤, 먼지의..

구현은 빡시다. (#15683 감시)

#15683 감시 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 구현할 내용이 너무 많아서 버거웠다. 하지만 모르겠던 부분은 하나도 없었다. 카메라별로 4개의 방향을 가지기 때문에, (카메라 수)^4 개의 경우의 수가 나온다. 이 경우의 수를 dfs 등의 방법을 통해 전부 구한 다음에 각각의 상황에 맞게 조건문을 작성하여 동작하게 하면 된다. from copy import deepcopy h, w = map(int, input()...

카운팅은 애매하다. (#3190 뱀)

#3190 뱀 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제가 짧아서인지 알고리즘을 꽤 풀어내서인지는 잘 모르겠지만 문제를 푸는 방법이 명료하게 보였다. 그래서 바로바로 구현했다. 뱀의 이동을 고민하던 터에, 큐를 사용하면 된다는 아이디어가 떠올랐고 적중했다. from copy import deepcopy n = int(input()) maps = [[0 for _ in range(n)] for __ in range(n)] for _ in ra..

좌표를 헷갈리지 말 것!! (#14499 주사위 굴리기)

#14499 주사위 굴리기 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 일단 주사위를 구현하는 것 부터가 빡셌다. 처음엔 리스트 두개로 구현하려고 했는데 리스트 간에 값을 교환하는 횟수가 너무 많을 것 같다는 생각이 들었다. 주사위가 동서남북으로 움직일 때마다 각 6면의 변화를 상상했다. 이렇게 변화하는 모습을 보였다. (사실 처음에 잘못 판단해서 삽질을 좀 했다.) 따라서 ..

빡구현은 체력전이다. (#14503 로봇청소기)

#14503 로봇청소기 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 고민도 필요없었다. 문제의 설명을 그대로 코드로 옮겼다. (말 그대로 구현) # 1. get input h, w = map(int, input().split()) # map size width - height x, y, d = map(int, input().split()) # start position, x, y, direc..

파이썬 시간초과는 논리도 필요해요. (#14888 연산자 끼워넣기)

#14888 연산자 끼워넣기 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 쉽다고 생각했다. 브루트포스 알고리즘을 사용해야하는 만큼 시간 초과가 마음에 걸렸지만 그래도 일단 해봤다. 시간초과 코드 import sys input = sys.stdin.readline num = int(input()) nums = [int(x) for x in input().split()] # +, -, ..

Postman 사용방법

개요 API를 디자인하고 빌드한 뒤 이를 테스트하려면 어떻게 해야하는가? 모든 API에 대응하는 클라이언트를 만들면서 개발하기엔 자원이 너무나 부족하다. 개발한 API에 요청을 조금 더 간단하게 보낼 수 있는 방법은 없는가? POSTMAN이라는 서비스가 이를 수행해준다. 예를 들어보자. app.get("/test", (req, res) -> { res.send(dummdyData); }); 이런 코드를 express server에서 띄워놓은 상황이라고 생각해보자. 물론, 로컬 배포 상황이다. (http://localhost:3000/) 그럼 postman에서 다음과 같이 요청을 보내볼 수 있다. dummydata가 잘 도착한 것을 볼 수 있다. 이렇게 API를 테스트 할 수 있다. 자세한 사용법은 하단의..

Git Flow 전략에 맞는 개발방법

여기서 다루는 내용은 절대적인 법칙이 아니다. 많은 개발자들이 git flow 전략과 branch 등 사용하긴 하지만 구체적인 방법은 모두 다르다. (그래서 convention이라는 표현이 사용되는 것 같기도 하다. 팀마다 설정하기 나름이니..) 다만, 우리 팀의 Rule이니 꼭 꼭 지켜주길 바란다. 아무튼 우리 팀에서 사용하는 convention이라고 생각하면 된다. 작업을 하다가 불편한 점, 뭔가 더 추가되었으면 하는 점이 생긴다면 회의 안건으로 올려도 좋다. Flow란? 직역하여 흐름이라는 의미 Git + Flow는 git에서 제공하는 branch 기능을 활용한 변경 이력 관리 전략이다. Git Flow란? 브랜치를 나누는 방법에 대한 분류 종 하나이다. Git Flow의 특징은 브랜치를 5종류로 ..