분류 전체보기 91

Python 가상환경 설정 및 개발환경 관리

가상환경 # 가상 환경 학습 이후 django 프로젝트 생성 명령어 $ django-admin startproject my_project . 가상 환경 제공 서비스 venv : Python 3.3 버전 이후 부터 기본모듈에 포함됨 virtualenv : Python 2 버전부터 사용해오던 가상환경 라이브러리, Python 3에서도 사용가능 conda : Anaconda Python을 설치했을 시 사용할 수있는 모듈 pyenv : pyenv의 경우 Python Version Manger임과 동시에 가상환경 기능을 플러그인 형태로 제공 Venv module Git Bash 에서 동작하게 하려면, python 버전 3.7.2 이상이 필요 생성 및 활성화 $ python -m venv [가상환경이름] $ sou..

Python 2021.03.17

대학교 메일 계정 GitHub pro 인증하기

우리 학교 메일 계정을 인증하면 Github pro를 무료로 사용할 수 있다고 한다. Github pro의 기능과 장점은 ... 자세히 모르지만 없는 것보단 좋을테니 등록했다. 방법은 아래와 같다! 1. GitHub Education 접속 GitHub Pro를 이용하기 위해서는 먼저 GitHub Education로 접속해야 한다. Discounted and free plans are available for educational use Teach and learn better, together. Learn to ship software like a pro. education.github.com 우측 상단에 Students 탭을 클릭하고, Get benefits for students 버튼을 클릭한다. 그..

Git 2021.03.16

django_02_crud

02_django_crud 02_django_crud 템플릿 폴더 구조 및 url 분리 articles/urls.py 파일 생성 프로젝트 폴더 url 설정 base.html 설정 {% block content %} {% endblock %} # crud/settings.py 'DIRS': [BASE_DIR / 'crud' / 'templates'], 기본 페이지 설정 # articles/urls.py from django.urls import path from . import views app_name = 'articles' urlpatterns = [ path('', views.index, name='index'), ..

Web/Django 2021.03.11

django_01_model

01_django_model Model 웹 어플리케이션의 데이터를 구조화하고 조작하기 위한 도구 개념 모델은 단일한 데이터에 대한 정보를 가짐 일반적으로 각각의 모델(클래스)는 하나의 데이터베이스 테이블과 매핑 모델은 부가적인 메타데이터를 가진 DB의 구조(layout)를 의미 Database 체계화된 데이터의 모임 (집합) 기본 구조 쿼리(Query) 데이터를 조회하기 위한 명령어 (주로 테이블형 자료구조에서) 조건에 맞는 데이터를 추출하거나 조작하는 명령어 스키마 (Schema) —> 뼈대(Structure) 데이터베이스에서 자료의 구조, 표현 방법, 관계 등을 정의한 구조 데이터베이스 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하며, 데이터베이스 사용자가 자료를 저장, 조..

Web/Django 2021.03.11

django_00_Intro

00_django_intro Intro python version 3.8 확인 vscode django extension 설치 및 설정 확인 설치 $ pip install django 특정 버전 설치 $ pip install django==x.x.x 설치 확인 $ pip list # python -m django --version 프로젝트 생성 [주의] project 를 생성할 때, Python 이나 Django 에서 사용중인 이름은 피해야 한다. - 도 사용할 수 없다. (ex. django, test, class, django-test...) $ django-admin startproject first_project 서버 실행 $ python manage.py runserver 프로젝트 구조 __in..

Web/Django 2021.03.11

BFS (Breadth First Search, 너비 우선 탐색)

설명 그래프를 탐색하는 방법에는 크게 두 가지가 있음 깊이 우선 탐색 (Depth First Search, DFS) 너비 우선 탐색 (Breadth First Search, BFS) 너비우선탐색은 탐색 시작점의 인접한 정점들을 먼저 모두 차례로 방문한 후에, 방문했던 정점을 시작점으로 하여 다시 인접한 정점들을 차례로 방문하는 방식 인접한 정점들에 대해 탐색한 후, 차례로 다시 너비우선탐색을 진행해야 하므로, 선입선출 형태의 자료구조인 큐를 활용 BFS는 아래와 같은 순서로 탐색 BFS 알고리즘 def BFS(G, v): # 그래프 G, 탐색 시작점 v visited = [0] * n # n : 정점의 개수 queue = [] # 큐 생성 queue.append(v) # 시작점 v를 큐에 삽입 while..

Algorithm 2021.03.04

Circular Queue (원형 큐)

설명 초기 공백 상태 : front = rear = 0 Index의 순환 front와 rear의 위치가 배열의 마지막 인덱스인 n-1을 가리킨 후, 그 다음에는 논리적 순환을 이루어 배열의 처음 인덱스인 0으로 이동해야 함 이를 위해 나머지 연산자를 사용 front 변수 공백 상태와 포화 상태 구분을 쉽게 하기 위해 front가 있는 자리는 사용하지 않고 항상 빈자리로 둠 삽입 위치 및 삭제 위치 원형 큐의 연산 과정 원형 큐의 구현 # 원형 큐에서 front와 rear의 초기값은 0 front, rear = 0, 0 # Index의 순환을 위해서 front와 rear은 n-1 다음에 0으로 이동해야함 # 이를 위해 나머지 연산자 mod()를 사용 # 삽입 def enQueue(item): global ..

Algorithm 2021.03.03

Linear Queue (선형 큐)

큐 설명 큐(Queue)의 특성 스택과 마찬가지로 삽입과 삭제의 위치가 제한적인 자료구조 큐의 뒤에서는 삽입만 하고, 큐의 앞에서는 삭제만 이루어지는 구조 선입선출구조(FIFO : First In First Out) 큐에 삽입한 순서대로 원소가 저장되어, 가장 먼저 삽입(First in)된 원소는 가장 먼저 삭제(First Out) 큐의 선입선출 구조 큐의 사용을 위해 필요한 주요 연산 큐의 연산 과정 선형 큐 1차원 배열을 이용한 큐 큐의 크기 = 배열의 크기 front : 저장된 첫 번째 원소의 인덱스 rear : 저장된 마지막 원소의 인덱스 상태 표현 초기 상태 : front = rear = -1 공백 상태 : front = rear 포화 상태 : rear = n-1 (n : 배열의 크기, n-1 ..

Algorithm 2021.03.03

Quick Sort (퀵 정렬)

설명 퀵 정렬은 기준키를 기준으로 작거나 같은 값을 지닌 데이터는 앞으로, 큰 값을 지닌 데이터는 뒤로 가도록 하여 작은 값을 데이터와 큰 값을 갖는 데이터로 분리해가며 정렬하는 방법 합병정렬과 동일? - 다르다 합병정렬은 그냥 두 부분으로 나누는 반면, 퀵정렬은 분할할 때, 기준키 중심으로 작은 값과 큰 값을 위치 각 부분 정렬이 끝난 후, 합병정렬은 '합병'이란 후처리 작업 진행, 퀵정렬은 필요하지 않음 알고리즘 def quickSort(arr, begin, end): if begin < end: p = partition(arr, begin, end) quickSort(arr, begin, p-1) quickSort(arr, p+1, end) def partition (arr, begin, end):..

Algorithm 2021.03.02

Divide and Conquer Algorithm (분할 정복 알고리즘)

설명 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 알고리즘 퀵 정렬, 합병 정렬로 대표되는 정렬 알고리즘 문제와 고속 푸리에 변환 문제가 대표적 설계 전략 분할(Divide) : 해결할 문제를 여러 개의 작은 부분으로 나눔 정복(Conquer) : 나눈 작은 문제를 각각 해결 통합(Combine) : (필요하다면) 해결된 해답을 모음 거듭 제곱 (Exponentiation) O(n) # 반복문을 이용한 거듭제곱 def Iterative_Power(x, n): result = 1 for i in range(1, n+1): result *= x return result O(logn) # 분할 정복을 이용한 거듭제곱 def Recursive_Power(x, n): if n == 1: r..

Algorithm 2021.03.02