no image
[자료구조] 시간복잡도 정리 with Cpp
앞서 설명한 자료구조 중 자주 쓰는 자료 구조의 최악의 시간 복잡도 Big O 스택과 큐의 경우 가장 앞에 있는 요소를 참조한다고 하면 O(1)이지만 중간에 있는 요소를 참조한다고 했을 때 랜덤접근이 아닌 순차접근만 되기 때문에 O(n)의 시간이 걸린다.
2023.02.24
no image
[자료구조] Fenwick Tree(Binary Indexed Tree, BIT) with Python
목차 팬윅 트리? 구현 업데이트 1. Fenwick Tree ? Segment Tree 처럼 구간에 대한 연산을 저장하는 트리 Segment Tree 보다 적은 메모리로 사용 가능하다!! 절반 정도의 메모리만으로 사용 가능 시간 복잡도 O(logN) 비트를 이용한 구간 연산을 진행한다. Q. 3~5번째 인덱스 구간 합을 구하기 A. 두 구간의 차를 구하면 된다. 5번 인덱스까지의 값을 구하려면 2진수 101 인덱스 값과 100 인덱스 값을 더하면 된다. 101 인덱스에서 마지막 1의 값을 제거해주면 100이 된다. Q. 마지막 2진수 1의 값을 제거하는 방법은? Answer. N = N - (N & -N) 5 - ( 5 & -5 ) = 4 4 - ( 4 & -4 ) = 0 2. 구현 Val = 1 ind..
2022.11.30
no image
[DB] M:N (ManyToManyField)
목차 정의 arguments methods 1. ManyToManyField ManyToManyField(to, **options) 다대다 (M:N, many-to-many) 관계 설정 시 사용하는 모델 필드 하나의 필수 위치 인자 (M:N 관계로 설정할 모델 클래스)가 필요 모델 필드의 RelatedManager를 사용하여 관련 개체를 추가, 제거 또는 만들 수 있음 add() remove() create() clear() etc.. 데이터베이스의 표현 Django는 다대다 관계를 나타내는 중개 테이블을 만듦 테이블 이름은 ManyToManyField 이름과 이를 포함하는 모델의 테이블 이름을 조합하여 생성됨 'db_table' arguments를 사용하여 중개 테이블의 이름을 변경할 수도 있음 2. ..
2022.10.13
no image
[DB] N:1 realationship
관계형 데이터베이스에서의 외래 키 속성을 사용해 모델 간 N:1 관계를 설정해보자. 목차 Intro RDB에서의 관계 Foreign key 1. INTRO RDB(관계형 데이터베이스) 복습 데이터를 테이블, 행, 열 등으로 나누어 구조화하는 방식 RDB의 모든 테이블에는 행에서 고유하게 식별 가능한 기본 키라는 속성이 있고, 외래 키를 사용하여 각 행에서 서로 다른 테이블 간의 관계를 만드는데 사용할 수 있음 ※ 참고 - 관계(Relationship) 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적인 연결 테이블 간 관계 예시 다음과 같이 어떠한 서비스의 데이터베이스에 고객 테이블과 주문 테이블이 존재 고객 테이블에는 고객에 관한 데이터가, 주문 테이블에는 주문에 관한 거래 정보가 포함..
2022.10.06
no image
[DB] DML3 - Grouping, Changing data
앞선 글들에서는 조회 및 필터링을 이용한 중복 제거, 조건 설정 등 쿼리를 제어하는 방법에 대해 알아보았다. 이번 글에서는 특정 그룹으로 묶어주는 Grouping과 데이터를 삽입, 수정, 삭제하는 법에 대해 알아보자 목차 Grouping data Insert Update Delete 1. GROUP BY clause SELECT column_1, aggregate_function(column_2) FROM table_name GROUP BY column_1, column_2; Make a set of summary rows from a set of rows 특정 그룹으로 묶인 결과를 생성 선택된 컬럼 값을 기준으로 데이터(행)들의 공통 값을 묶어서 결과로 나타냄 SELECT 문에서 선택적으로 사용 가능한..
2022.10.05
no image
[DB] DML2 - Filtering data
앞에서는 조회와 정렬에 대해서 볼 수 있었다. 이번엔 데이터를 필터링하여 중복 제거, 조건 설정 등 쿼리를 제어해보자. Clause SELECT DISTINCT WHERE LIMIT Operator LIKE IN BETWEEN 목차 SELECT DISTINCT WHERE clause LIKE Operator IN Operator BETWEEN Operator LIMIT clause 1. SELECT DISTINCT clause SELECT DISTINCT select_list FROM table_name; "Remove duplicate rows in the result" 조회 결과에서 중복된 행을 제거 DISTINCT 절은 SELECT에서 선택적으로 사용할 수 있는 절 문법 규칙 DISTINCT 절은 ..
2022.10.05
no image
[DB] DML1 - simple query, Sorting rows
DML (Data Manipulation Language)로서 데이터를 조작하는 데 사용되는 언어이다. (CRUD) 목차 사전 준비 Simple query Sorting rows 1. 사전 준비 우선 데이터 더미들을 .csv로 저장 후 해당 csv 파일 데이터를 import 해서 사용해주어야 한다. sqlite3 기본 사용법 1. 시작하기 2. 데이터베이스 파일 열기 3. 종료하기 CSV 파일을 SQLite 테이블로 가져오기 1. DML.sql 파일 생성 (새로운 파일 생성) 2. 테이블 생성하기 3. 데이터베이스 파일 열기 4. 모드(.mode)를 csv로 설정 5.. import 6. import 된 데이터 확인하기 sqlite3 tool에서도 SQL 문을 사용할 수 있지만, 편의와 명령어 기록을 위..
2022.10.05
no image
[DB] DDL2 - ALTER, DROP TABLE
데이터베이스에 새 테이블을 만들기 위한 CREATE에 대해서 알아보았다. 이번엔 수정과, 삭제를 위한 ALTER, DROP TABLE을 알아보자. 목차 ALTER TABLE DROP TABLE 1. ALTER TABLE "Modify the structure of an existing table" 기존 테이블의 구조를 수정(변경) SQLite의 ALTER TABLE 문을 사용하면 기존 테이블을 아래와 같이 변경 가능 Rename a table Rename a column ADD a new column to a table Delete a column https://www.sqlite.org/lang_altertable.html ALTER TABLE RENAME "Rename a table" 앞서 작성했던 ..
2022.10.05
no image
[DB] DDL1 - create table
SQLite3를 설치한 후 vscode에서 실습을 하며 DDL을 이해하며 알아가보자. 목차 사전 준비 CREATE TABLE SQLite Data Types Constraints 1. 사전 준비 SQLite 설치 - https://www.sqlite.org/download.html 접속하여 C 드라이브 - sqlite 폴더 생성 후 위 사진에서의 파일 2개 압축 풀기 시스템 환경 변수 -> 시스템 변수의 PATH -> 1번에서 생성한 폴더 경로 작성 winpty sqlite3를 통해 실행 가능 Vscode SQLite 확장프로그램 설치 확인 이후 데이터베이스 mydb.squlite3 파일 생성 DDL.sql 파일 생성 vscode 실행 후 DDL.sql 화면에서 마우스 우측 버튼 클릭 -> Use Dat..
2022.10.04