파이썬

· 웹/web
건국대학교 종강시를 크롤링하며 겪었던 문제들을 적어보고자 한다. 먼저, 처음에는 대학과 학과 선택을 기준으로 나오는 강의 리스트들의 정보만 크롤링하려 했고, 이는 준수한 속도를 내었기에 멀티쓰레딩에 대한 고려는 하지 않았다. 하지만, 강의계획서 안에 있는 수강 신청 유의 사항도 조사하고자 했고, 팝업창 기능까지 추가하는 순간 속도가 너무 느려졌다. 마침, AI 해커톤에서 데이터를 처리할 때 멀티쓰레딩을 했던 경험이 있었고, 속도가 매우 빨라졌었다. 물론 selenium이 thread-safe는 아니어서 의미가 없을 것은 대강 알고 있었지만, 궁금해서 한번 해보기로 했다.먼저, 멀티쓰레딩을 하기 위해 기존 코드에서 멀티쓰레딩에 맞는 구조로 바꿔주고, 파이썬의 threading 라이브러리를 사용했다.일단 해..
· 웹/Django
이전 글에서 REST framework의 아주 간단한 예시를 다뤘다. 다만, serializer 클래스와 관련하여 이해가 안 되는 부분이 있어서 알아볼 예정이다. 아래의 내용은 Django REST framework의 공식문서를 번역하여 정리했다. serializers Serializers는 querysets과 model 인스턴스와 같은 복잡한 데이터를 JSON 과 XML 등 기본적인 콘텐츠 타입으로 렌더링 할 수 있는 파이썬 네이티브 데이터타입으로 변환시켜 준다. Serializers는 유효한 데이터가 입력되기만 하면 다시 복잡한 데이터로 돌아갈 수 있는 deserialization(역직렬화)도 제공한다. REST framework의 serializer는 Django의 Form 과 ModelForm 클..
· 웹/Django
react인 프런트엔드에서 api통신을 위해 Django REST Framework라는 것을 사용해야 한다. 그렇다면 Django REST Framework는 뭘까? Djagno REST Framework Django 안에서 RESTful API서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리이다. RESTful API란? REST + API로 REST 아키텍처 규칙을 따라 만드는 API다. REST는 REpresentative State Transfer의 약자로 HTTP 프로토콜을 이용하는 url을 이용해서 HTTP Method를 통해 작업(CRUD)을 처리하는 방식이다. REST API의 장점 1. simple / standardize 2. scaleable / stateless 3. hig..
문제이해 선분들이 주어질 때, 그 선분들이 교차하거나 닿는 부분이 있다면 같은 그룹으로 묶고, 아니라면 다른 그룹으로 취급하여, 그룹의 개수와 그룹들 중 선분이 가장 많은 그룹의 선분 개수를 출력하는 문제이다. 계획 이 문제는 두가지 부분으로 나눠진다. 1. 먼저 선분 두 개가 주어졌을 때 교차하는지 확인하는 함수가 필요하다. 2. 만약 교차할때, 같은 그룹으로 묶어주는 함수가 필요하다. 1번 같은 경우는 ccw를 이용하여요 선분이 교차하거나 맞닿는지 확인하면 되고, 2번 같은 경우는 union-find를 이용해서 같은 그룹으로 묶어주면 된다. 마지막으로, 그룹의 크기를 출력해야하므로 union 할 때마다 각 그룹의 root에 해당하는 원소에 그룹의 위치를 계속해서 저장해 주면 나중에 쉽게 출력할 수 있..
문제이해 문제가 호흡이 긴데 요약하자면 1로 된 섬과 0으로 된 바다로 이루어진 매트릭스가 주어질 때 최소 비용으로 그 섬을 모두 연결하는 문제이다. 다만, 다리는 직선이어야 하고 길이가 2 이상 이어야 한다. 계획 일단 이문제의 핵심은 모든 섬을 최소비용으로 연결해야 한다는 점이다. 이 점만 본다면 일반 최소신장트리(MST) 문제와 다르지 않다. 크루스칼을 쓰면서 섬을 추가하면 된다. 다만 그러기 위해서는 각 섬과의 다리 개수와 길이, 섬의 개수가 필요하다. 따라서, 첫 번째로 주어지는 매트릭스에서 그러한 정보를 추출해야 한다. 이 문제의 대략적인 순서는 아래와 같아야 한다. 1. 매트릭스에서 섬위치와 개수 파악 2. 매트릭스에서 다리 개수와 길이 추출 3. 크루스칼 먼저 매트릭스에서 섬이 같은 섬인지..
1 2 3 4 5 6 1 2 (2, 3) 3 (3, 5) 4 5 (5, 5) 6 문제이해 (1, 1)과 (n, n)에 있는 경찰차 두대가 최소거리로 사건들을 해결하는 방법과 거리를 출력하는 문제이다. 계획 이 문제가 어렵게 느껴지는 이유는 경찰이 현재 있는 위치에 따라 추가되는 거리가 계속해서 달라지기 때문이다. 따라서, 기존의 dp문제처럼 dist[n+1] = dist[n] + min(police1[n], police2[n])와 같은 점화식은 사용할 수 없다. 각 경우에 따라 거리가 달라지기 때문에 모든경우의 수를 탐색하는 방법을 생각할 수 있지만. 사건이 n개일 때의 경우의 수는 2^n개다. 사건이 3개일때의 경우의 수 111 112 121 122 211 212 221 222 사건의 개수가 1000개..
implement
'파이썬' 태그의 글 목록