분류 전체보기
-
Develop/Web & Framework 2022. 1. 3. 23:24
migration 로그를 읽어보던 중, 다음과 같은 dependency를 발견했다. 장고 도큐먼트에 언급되어 있지 않아서 궁금해졌다. 🚀 django.contrib.auth의 User django.contrib.auth 에서는 유저를 정의할 수 있는, 인증에 관련된 모델을 제공해준다. 우리는 이 모델(가장 상위 모델은 User인데, 사실상 대부분의 속성은 AbstractUser 가 가지고 있다. 따라서 보통 AbstractUser를 상속하여 사용한다) 을 확장하여 서비스 내에서 customizing한 유저 모델을 생성하고, 이를 settings 변수인 AUTH_USER_MODEL에 지정함으로서 우리가 정의한 유저를 사용할 수 있게 된다. 인증에 관련된 모델이 상속되는 구조를 다이어그램으로 나타낸 것이다...
-
프로젝트 2022. 1. 2. 20:26
🚀 새로운 프로젝트 시작 지난 여름에 정말 마음이 잘 맞는 동료들을 만나서 너무 즐겁게 진행하던 프로젝트가 있었는데, 취준/해외/직장 등 다들 시간적 여유가 없어 흐지부지 되었더랬다. 그냥 알고리즘에나 집중하자 하고 근 한두달간 공부 중이었는데, 우연히 새로운 프로젝트를 시작하게 되었다. DRF 기반의 backend API 설계와 서버 구축을 맡을 예정이다. 프로젝트 시작 전에 내가 이 프로젝트 경험을 통하여 지식적으로 성장하고자 하는바와 목표에 대하여 기술해보려한다. 💥 목표 설정하기 1. 정규화 규칙을 따르는 DB 설계 현업에서 일해본 경험이 없어서 좋은 DB구조/확장성 있는 설계에 대한 정확한 기준은 세울 수 없지만 스스로 설정한 규칙을 지키면서 모델링을 진행해보려 한다. (보통 정규화 3단계까지를..
-
Programming Language/Python 2021. 12. 29. 23:33
👩🏻💻 Pythonic하게 코드 작성하기 Django REST 프레임워크에서 API response를 커스터마이징하기 위하여 renderer를 작성하고 있었다. JSend 포맷을 따를 것이므로, 에러코드들에 대하여 작성해야 할 json format은 다음과 같았다. 400번대 에러코드를 반환하는 client error들에 대한 format을 작성하려 하는데.. 400을 반환하는 ValidationError와 나머지 400번대 에러들이 반환하는 data의 type이 달랐다. 처음엔 반환되는 ErrorDetail 객체의 변수인 code(exceptionclass들에 정의된 default_code값)를 뽑아와서 400번대 에러를 두 종류로 나누었는데, 특정 에러에 대해서만 이렇게 문자열로 처리를 한다는 것이..
-
알고리즘/백준 2021. 12. 29. 16:13
문제 1495번: 기타리스트 첫째 줄에 N, S, M이 주어진다. (1 ≤ N ≤ 50, 1 ≤ M ≤ 1,000, 0 ≤ S ≤ M) 둘째 줄에는 각 곡이 시작하기 전에 줄 수 있는 볼륨의 차이가 주어진다. 이 값은 1보다 크거나 같고, M보다 작거나 같다. www.acmicpc.net 풀이 a. 접근법 https://www.acmicpc.net/problem/1463 문제와 유사하게 메모이제이션(memoization) 방식으로 접근하였다 DP[i] = i번째 곡을 연주할 때 가질 수 있는 볼륨값 P+V[i]와 P-V[i]가 범위 내의 볼륨 값을 가진다면 DP에 추가, DP[i]의 볼륨값을 가지고 DP[i+1]의 볼륨값을 구해낸다 이 때 마지막 곡을 연주할 수 없는 경우 (DP에 값이 없는 row가 존..
-
알고리즘/백준 2021. 12. 9. 19:14
문제 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 a. 접근법 N개의 동전을 사용하여 가치의 합이 K가 되는 경우의 수를 구해야 한다 knapsack 알고리즘을 이용하여 접근한다 ⓐ j가 coin[i]보다 작은 경우는, i번째 동전을 사용할 수 없으므로 DP[i][j] = DP[i-1][j] ⓑ j가 coin[i]보다 크거나 같은 경우는, i번째 동전을 0개 ~ x(x*coin[i]
-
알고리즘/백준 2021. 12. 9. 16:21
문제 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr 풀이 a. 접근법 [0,0] ~ [m, n]까지의 최단 거리 경로의 수 구하는 방법 b. 실패 해당 index에 대하여 모든 경로의 수를 먼저 계산한 뒤, 갈 수 없는 경로의 수를 계산하여 제하는 방법 -> 효율성, 정확성 모두 실패 * 시간복잡도 O(N^3) 그림 때문에 m, n이 너무 헷갈렸다ㅠㅠㅠ def get_shortest_path(start_y, start_x, end_y, end_x): dp0 = [[1] * (end_y-start_y) for ..
-
개발 서적/한 권으로 읽는 컴퓨터 구조와 프로그래밍 2021. 11. 14. 13:00
컴퓨터는 어떤 논리로 비트를 다루는가? 디지털 하드웨어를 왜 사용해야 하는가 아날로그(analog)와 디지털(digital) 아날로그는 연속적(continuous)이고 디지털은 이산적(discrete)이다 이산적인 장치는 판정 기준(decision criteria)이 있다 판정 기준의 도입은 값 중에 어떠한 범위의 값을 표현할 수 있는 가능성을 사라지게 한다 하드웨어를 작게 만들수록 성능이 높아진다? = 전자가 이동할 수 있는 횟수를 높인다 하드웨어를 작게 만들면 속도와 효율은 좋아지지만, 물체가 너무 작아지면 간섭이 증가할 수 있다 외부 간섭: 판정 기준을 도입하여 안정성을 높임 내부 간섭: 칩 안에서 선을 통하는 전기신호가 가까이 위치한 다른 선에 영향을 끼치는 경우 → 누화(crosstalk) 효과..
-
알고리즘/프로그래머스 2021. 10. 26. 21:46
코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr def solution(k, dungeons): answer = 0 dungeons.sort(key=lambda x: (x[0] - x[1], -x[1], x[0]), reverse=True) value = k for d in dungeons: if value >= d[0]: value -= d[1] answer += 1 return answer def dfs(k, dungeons, visited, cnt, answer): for i in range(le..