최단 경로(Shortest Path) 알고리즘 최단 경로(Shortest Path) 알고리즘은 말 그대로 가장 짧은 경로를 찾는 알고리즘이다. 최단 경로 알고리즘 유형에는 다양한 종류가 있는데, 상황에 맞는 효율적인 알고리즘이 이미 정립되어 있다. 최단 경로 문제는 보통 그래프를 이용해 표현하는데 각 지점은 그래프에서 '노드'로 표현되고, 지점 간 연결된 도로는 그래프에서 '간선'으로 표현된다. 코딩 테스트에서 가장 많이 등장하는 최단 거리 알고리즘은 다익스트라 최단경로와 플로이드 워셜 알고리즘이다. 최단경로 알고리즘에는 그리디 알고리즘과 다이나믹 프로그래밍 알고리즘이 그대로 적용된다는 특징이 있다. 다익스트라(Dijkstra) 알고리즘다익스트라(Dijkstra) 최단 경로 알고리즘은 그래프에서 ..
전체 글
슈의 슈터디 기록다이나믹 프로그래밍(Dynamic Programming)은 동적 계획법이라고도 하며, 메모리 공간을 약간 더 사용함으로써 연산 속도를 비약적으로 줄일 수 있는 방법이다. 다이나믹 프로그래밍으로 해결할 수 있는 대표적인 예시로 피보나치 수열이 있다. 피보나치 수열은 이전 두 항의 합을 현재의 항으로 설정하는 특징이 있는 수열이다. 피보나치 수열의 점화식은 다음과 같이 표현할 수 있다. 결과적으로 첫 번째 항과 두 번째 항의 값이 모두 1이기 때문에 최종적으로 피보나치 수열을 나타낼 때에는 다음과 같이 정의할 수 있다.이를 해석하면 다음과 같다. n번째 피보나치 수=(n-1)번째 피보나치 수 + (n-2)번쨰 피보나치 수단, 1번째 피보나치 수 = 1, 2번째 피보나치 수 = 1프로그래밍에서는 이러한 수..
템플릿(Template)이란?사용자의 요청에 대해 뷰함수에서 응답하는 HTML 파일을 장고에서는 템플릿이라고 부른다. 템플릿 환경 설정- 앱 디렉토리 로더'app_directories.Loader'는 Django의 각 애플리케이션 디렉토리 내의 'templates' 서브 디렉토리에서 템플릿을 찾는다. 이 로더는 각 앱이 자체 템플릿 파일을 가질 수 있도록 함으로써, 코드와 템플릿 파일을 조직적으로 관리하는 데 유용하다.작동 방식앱 디렉토리 탐색: Django는 INSTALLED_APPS 설정에 나열된 각 애플리케이션 디렉토리를 탐색한다. 템플릿 서브 디렉토리: 각 애플리케이션 디렉토리 내의 templates라는 이름의 서브 디렉토리를 찾는다.템플릿 파일 로드: 특정 템플릿을 요청할 때, Django는 ..
ORM이란?ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑 해 주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데잍터베이스는 테이블을 사용하기에 객체 모델과 관계형 모델 간에 불일치가 존재한다. 이때 ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결 해 주는 것이다.Django는 파이썬 기반으로, 객체 지향 프로그래밍이기 때문에 클래스를 사용한다. 장고 Model장고는 모델(Model)을 이용해 데이터베이스를 처리한다. 보통 데이터베이스에 데이터를 저장하고 조회하기 위해서 SQL 쿼리문을 이용해야 하지만, 장고의 모델을 사용하면 SQL 쿼리문 없이 데이터를 쉽게 처리할 수 있다. DB 환..
1. 일대다(1:M) 관계 이름post = Post.objects.get(id=10) # Post id=10 인스턴스 추출post.comment_set # post와 관계된 모든 Comment 인스턴스 접근post.comment_set.all() # post와 관계된 모든 Comment 인스턴스 추출2. 일대일(1:1) 관계 이름user = User.objects.get(id=1) # user id가 1인 사람의 인스턴스를 추출user.profile # user id가 1인 사람의 프로필에 접근3. 다대다(N:M) 관계 이름post_ins = Post.objects.get(id=14) # id가 14인 인스턴스 추출post_ins.tag.all() # id가 14인 post의 모..
1. 일대다(1:M)# cmdpython manage.py makemigrations blogpython manage.py migrate blog DB Browser for SQLite에서 db.sqlite3 열기 2. 일대일(1:1)# cmdpython manage.py makemigrations blogpython manage.py migrate blog 3. 다대다(N:M)
6. admin 앱에서 데이터 조작1) admin 앱 등록# cmd python manage.py migrate 2) admin 앱 사용 계정 만들기# cmdc:\Django\mysite>python manage.py createsuperuser Username (leave blank to use 'purum'): admin Email address: admin@mysite.com Password: admin123 Password (again): admin123 The password is too similar to the username. This password is too common. Bypass password validation and create user anyway? [y/N]: y Sup..
모델 생성 1. 모델 클래스 작성- 앱/models.py에 정의 2. migration 파일 생성# cmdpython manage.py makemigrations 앱이름 3. migrate 작업# cmdpython manage.py migrate 앱이름 4. MySQL 설정pip install mysqlclient 5. 장고쉘에서 데이터 추가, 조회, 수정, 삭제 (CRUD)장고쉘# cmdpython manage.py shell>>> from 앱이름.models import 모델명 > Create - 데이터 추가- 방법1: Model의 save()>>> post = 모델명(title='제목', body='내용')>>> post.save() - 방법2: Manager의 create()>>> 모델명.obje..