- M:N
- 큐
- outer join
- Django
- drf
- SQL
- 백트래킹
- 뷰
- migrations
- 이진트리
- distinct
- Tree
- Article & User
- 스택
- 트리
- stack
- 통계학
- Vue
- create
- DB
- count
- 쟝고
- 그리디
- 완전검색
- update
- regexp
- Queue
- N:1
- ORM
- delete
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
목록2024/05 (31)
데이터 분석 기술 블로그

1. DP(Dynamic Programming)동적 계획 (Dynamic Programming) 알고리즘은 그리디 알고리즘과 같이 최적화 문제를 해결하는 알고리즘입니다.동적 계획 알고리즘은 먼저 입력 크기가 작은 부분 문제들을 모두 해결한 후에 그 해들을 이용하여 보다 큰 크기의 부분 문제들을 해결하여, 최종적으로 원래 주어진 입력의 문제를 해결하는 알고리즘입니다. 2. 피보나치 수 DP 적용피보나치 수는 부분 문제의 답으로부터본 문제의 답을 얻을 수 있으므로 최적 부분 구조로 이루어져 있습니다.1) 문제를 부분 문제로 분할합다.Fibonacci(n) 함수는 Fibonacci(n-1)과 Fibonacci(n-2)의 합Fibonacci(n-1)은 Fibonacci(n-2)와 Fibonacci(n-3)의 합..

1. 재귀호출의 문제점이전의 설명한 재귀호출 (2024.05.26 - [백엔드] - 재귀호출)의 문제점은 엄청난 중복 호출이 존재합니다.2. Memoization메모이제이션(memoization)은 컴퓨터 프로그램을 실행할 때 이전에 계산한 값을 메모리에 저장해서 매번 다시 계산하지 않도록 하여 전체적인 실행속도를 빠르게 하는 기술입니다. 동적 계획법의 핵심이 되는 기술입니다.'memoization'은 글자 그대로 해석하면 '메모리에 넣기(to put in memory)'라는 의미이며 ' 기억되어야 할 것'이라는 뜻의 라틴어 memorandum에서 파생되었다. 흔히 '기억하기', '암기하기'라는 뜻의 memorization과 혼동하지만, 정확한 단어는 memoization이다. 동사형은 memoize이다..

1. 재귀호출자기 자신을 호출하여 순환 수행되는 것입니다.함수에서 실행해야 하는 작업의 특성에 따라 일반적인 호출방식보다 재귀호출방식을 사용하여 함수를 만들면 프로그램의 크기를 줄이고 간단하게 작성할 수 있습니다.재귀 호출의 예) factorialn에 대한 factorial : 1부터 n까지의 모든 자연수를 곱하여 구하는 연산입니다마지막에 구한 하위 값을 이용하여 상위값을 구하는 작업을 반복합니다.0과 1로 시작하고 이전의 두 수 합을 다음 항으로 하는 수열을 피보나치라고 합니다.0, 1, 1, 2, 3, 5, 8, 13피보나치수열의 i번 째 값을 계산하는 함수 F를 정의하면 다음과 같습니다.F0 = 0, F1 = 1Fi = Fi-1 + Fi-2 for i ≥ 2위의 정의로부터 피보나치 수열의 i번째 항..

1. 스택(stack)의 특성물건을 쌓아 올리듯 자료를 쌓아 올린 형태의 자료구조입니다.스택에 저장된 자료는 선형 구조를 갖습니다.선형구조 : 자료 간의 관계가 1대 1의 관계를 갖습니다.비선형구조 : 자료 간의 관계가 1대 N의 관계를 갖습니다.(예: 트리)스택에 자료를 삽입하거나 스택에서 자료를 꺼낼 수 있습니다.마지막에 삽입한 자료를 가장 먼저 꺼냅니다. 후입선출(LIFO, Last-In-First-Out)이라고 부릅니다.예를 들어 스택에 1, 2, 3 순으로 자료를 삽입한 후 꺼내면 역순으로 3, 2, 1 순으로 꺼낼 수 있습니다.2. 스택을 프로그램에서 구현하기 위해서 필요한 자료구조와 연산자료구조 : 자료를 선형으로 저장할 저장소배열을 사용할 수 있습니다.저장소 자체를스택이라고 부르기도 합니다..

1. OpenAPI Specification (OAS)RESTful API를 설명하고 시각화하는 표준화된 방법으로 API에 대한 세부사항을 기술할 수 있는 공식 표준입니다. 2. drf-spectacular 라이브러리DRF를 위한 OpenAPI 3.0 구조 생성을 도와주는 라이브러리입니다.설치 및 등록하기$ pip install drf-spectacular# settings.pyINSTALLED_APPS = [ ..., 'drf_spectacular', ...,]관련 설정 코드 입력하기 (OpenAPI 스키마 자동 생성 코드)# settings.pyREST_FRAMEWORK = { # YOUR SETTINGS 'DEFUALT_SCHEMA_CLASS': 'drf_spectacul..

1. Article → Comment 간 역참조 관계를 활용한 JSON 데이터 재구성아래 2가지 사항에 대한 데이터 재구성하기단일 게시글 조회 시 해당 게시글에 작성된 댓글 목록 데이터도 함께 붙여서 응답단일 게시글 조회 시 해당 게시글에 작성된 댓글 개수 데이터도 함께 붙여서 응답2. 단일 게시글 + 댓글 목록Nested relationships모델 관계상으로 참조하는 대상은 참조되는 대상의 표현에 포함되거나 중첩될 수 있다.이러한 중첩된 관계는 serializers를 필드로 사용하여 표현 가능# articles/serializers.pyclass CommentSerializer(serializers.ModelSerializer): class Meta: model = Comment ..

댓글 조회 시 게시글 출력 내역 변경댓글 조회 시 게시글 번호만 제공해 주는 것이 아닌 '게시글의 제목'까지 제공하기필요한 데이터를 만들기 위한 Serializer는 내부에서 추가 선언 가능# articles/serializers.pyclass CommentSerializer(serializers.ModelSerializer): class ArticleTitleSerializer(serializers.ModelSerializer): class Meta: model = Article fields = ('title',) article = ArticleTitleSerializer(read_only=True) class M..

DELETE & PUT단일 댓글 삭제 및 수정을 위한 view 함수 작성# articles/views.py@api_view(['GET', 'DELETE', 'PUT'])def comment_detail(request, comment_pk): comment = Comment.objects.get(pk=comment_pk) if request.method == 'GET': serializer = CommentSerializer(comment) return Response(serializer.data) elif request.method == 'DELETE': comment.delete() return Response(status..