전체 글 40

[Python] bisect 모듈

백준에서 문제를 풀며 LIS(Longest Increasing Subsequence) 문제를 해결하다가 bisect모듈에 대해 알아보게 되었습니다. bisect 모듈은 Python 표준 라이브러리의 모듈로, 정렬된 리스트를 효율적으로 관리하는 데 사용합니다. 이 모듈은 리스트에 값을 넣거나 특정 값을 찾는 과정을 이분 탐색으로 수행하며, 시간 복잡도는 O(logn)입니다. bisect 모듈의 주요 함수1. bisect.bisect_left(list, value)정렬된 list에서 value를 삽입할 수 있는 가장 왼쪽 위치를 반환합니다.같은 값이 있는 경우, 해당 값의 가장 왼쪽 값의 위치를 반환합니다.예시import bisectarr = [1, 2, 3, 5]pos1 = bisect.bisect_lef..

Python 2025.01.18

[백준] 스도쿠(2239) - python

문제 : https://www.acmicpc.net/problem/2239 문제 요약스도쿠판이 주어졌을 때 스도쿠 판을 채우는 문제입니다. 문제 조건에 동일한 정답이 있을 경우 81자리가 가장 작은 숫자를 답으로 설정하라는 조건이 있습니다. 풀이 방식먼저 백트래킹을 사용해서 구현을 진행하였습니다. 먼저 2차원 배열에 입력을 받아서 앞에서부터 빈칸을 채우면서 백트래킹을 진행하는 방식으로 설계하여 구현했습니다. 따라서 아래 코드가 정답으로 나왔는데 아래 코드는 pypy3을 사용해서 정답으로 통과가 되었고 python3에서는 시간 초과가 되었습니다. 정답 코드import sysinput = sys.stdin.readlineclass Sudoku: def __init__(self): self...

[Django] 테스트 코드

테스트는 코드 작동을 확인하는 루팅입니다.테스트를 만들어야하는 이유테스트를 통해 시간 절약 가능특정 조건에서 발생하는 오류에 도달하는 과정을 요약할 수 있음오류 예방 가능코드의 최적화 Django에서 test 자동화하기다음은 현재 작성한 코드에서 발생하는 오류를 shell을 통해 확인하는 과정입니다.>>> import datetime>>> from django.utils import timezone>>> from polls.models import Question>>> future_question = Question(pub_date=timezone.now() + datetime.timedelta(days=30))>>> future_question.was_published_recently()True미래 시..

Python/Django 2024.12.23

[Django] pep 8 코드 스타일

공식 문서를 공부하는 중 Django에서 사용하는 pep 8 코드 스타일에 대해 알아보게 되었습니다. 1. 기본 코드 레이아웃(들여쓰기, 줄 길이 등)들여쓰기공백(스페이스) 4칸을 권장합니다.탭(\t)은 사용하지 않고, 공백을 사용합니다.줄 길이한 줄은 최대 79자를 권장합니다.Docstring이나 주석은 최대 72자를 권장합니다.빈 줄함수와 클래스 사이에는 빈 줄을 두어 구분을 명확히 합니다.함수 내부 로직을 의미 단위로 구분할 때도 빈 줄을 적절히 활용합니다. 2. 임포트(Import) 스타일PEP 8에서는 다음과 같은 임포트 순서를 권장합니다:표준 라이브러리 모듈서드파티(Third-party) 모듈Django 자체 모듈현재 프로젝트(어플리케이션) 모듈Django에서는 크게 다음과 같은 포인트들을 권..

Python/Django 2024.12.23

[Django] 뷰(View) 종류

Django에서 view는 사용자의 요청을 처리하고 적절한 응답을 반환하는 역할을 합니다. 일반적으로 view는 애플리케이션의 로직과 데이터를 처리한 후, HTML, JSON 파일 등의 형태로 응답을 반환합니다. 1. 함수형 뷰(Function-Based View, FBV)함수형 뷰는 python의 함수로 정의되며, 요청을 받아 응답을 반환합니다.from django.http import HttpResponse, HttpResponseNotAlloweddef my_view(request): if request.method == "GET": return HttpResponse("This is a GET request") elif request.method == "POST": ..

Python/Django 2024.12.22

[Django] render 함수와 get_object_or_404 함수

Django에서는 템플릿을 사용해서 간단한 html을 구현할 수 있습니다. template 폴더에 html파일을 만들고 불러오는 방식으로 사용할 수 있는데 이때 HttpResponse를 사용해서 불러오는 방법도 있지만 render함수를 사용해서 더 간단하게 구현할 수 있습니다.render()def index(request): latest_question_list = Question.objects.order_by("-pub_date")[:5] template = loader.get_template("polls/index.html") context = { "latest_question_list": latest_question_list, } return HttpRespo..

Python/Django 2024.12.20

[알고리즘] 스패닝 트리와 최소 신장 트리

스패닝 트리(Spanning Tree)스패닝 트리는 연결된 그래프에서 모든 정점을 포함하고, 그래프의 간선의 부분집합을 사용해 사이클 없이 연결된 구조입니다. 주요 특징으로는스패닝 트리의 간선 개수는 정점 개수가 N 일 때 N - 1개입니다.하나의 그래프에 여러 개의 스패닝 트리가 존재할 수 있습니다. 최소 신장 트리(MST, Minimum Spanning Tree)최소 신장 트리는 연결 그래프에서 모든 정점을 포함하면서 최소 비용으로 연결된 부분 그래프입니다. 주요 특징으로는그래프의 모든 정점이 연결되어야 합니다.사이클이 없는 트리 형태를 가집니다.간선의 가중치 합이 최소화됩니다.최소 신장 트리를 찾기 위해 다음과 같은 알고리즘이 많이 사용됩니다. 크루스칼 알고리즘(Kruskal's Algorithm)..

[Django] Model과 Field

모델먼저 모델은 데이터에 대한 단 한나의 정보의 소스로, 모델은 저장하고 있는 데이터의 필수적인 빌드와 동작을 포함하고 있습니다. 일반적으로 각각의 모델은 하나의 데이터베이스 테이블에 매핑됩니다. 모델의 특징으로는각각의 모델은 파이썬 클래스로, 하위클래스인 django.db.models.Model에 속합니다.모델의 각 속성은 데이터베이스 필드를 나타냅니다.Django는 자동으로 생성되는 데이터베이스-엑세스 API를 실행해 줍니다.예제from django.db import modelsclass Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30)Pers..

Python/Django 2024.12.17

[Django] 관리자 관련

서버를 관리할 때 관리자 계정을 생성하곤 하는데 Django는 모델에 대한 관리용 인터페이스를 모두 자동으로 생성해 줍니다. 관리자 생성하기python manage.py createsuperuseruser 이름 입력Username: 이메일 주소 입력Email address: 암호 입력(2번 입력)Password: ********Password: (again): ********Superuser created successfully. 개발 서버 시작Django 관리자 사이트는 기본적으로 활성화되어 있습니다. 서버를 동작하고 http://127.0.0.1:8000/admin/ 주소로 접속할 수 있습니다.python manage.py runserver이전에 설정해 준 username과 password를 입력하게..

Python/Django 2024.12.17

[Django] settings.py와 migrate

mysite/settings.py이 파일은 Django 설정을 모듈 변수로 표한 한 보통의 Python 모듈입니다. 기본적으로 DATABASES로 SQLite를 사용합니다. SQLite 는 Python에 포함되어 있는 사용하기 쉬운 데이터베이스입니다. PostgreSQL이나 MySQL 같은 다른 데이터베이스도 사용가능합니다. INSTALLED_APPSmysite/settings.py에 있는 INSTALLED_APPS는 현재 Django 인스턴스에서 활성화된 모든 Django 어플리케이션들의 이름이 들어있습니다. 앱들은 다수의 프로젝트에서 사용될 수 있고, 다른 프로젝트에서 쉽게 사용될 수 있도록 패키징하여 배포 가능합니다. 다음은 기본적인 Django 앱들 목록입니다.django.contrib.admin..

Python/Django 2024.12.16