https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 파이프 옮기기 1 문제 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프..
poetry는 의존성 관리와 패키징을 돕는 도구이다. 너의 프로젝트의 의존성 라이브러리들의 선언을 돕고, 관리해준다. 반복적인 설치와, 배포를 위한 빌드도 돕는다. python 3.7+ 이상만 지원한다. Linux, macOS, Windows 에서 사용이 가능하다. Windows 에서의 사용법 cmd를 열어서 아래를 입력한다. pip install poetry 나는 pycharm(파이참) IDE를 이용하기 때문에 이 안에서 관리를 해볼 것이다. 1. 프로젝트 생성 2. poetry 사용 파이참 터미널에 아래를 입력한다. poetry init 그 뒤에 나오는 질문들을 읽고 바꾸고 싶은 것이 있으면 바꾸고, 아니면 그냥 엔터 연타하면 .toml 파일이 하나 생성된다. 3. 원하는 패키지 설치 poetry D..
클래스 내에 작성된 함수를 메서드(method)라고 부른다. 함수만 작성된 것은 그냥 함수라고 부른다. 보통 함수와 메서드를 구분하는 방법이다. 파이썬에서 메서드는 크게 3가지로 나뉜다. 인스턴스 메서드(instance method) 정적 메서드(static method) 클래스 메서드(class method) 인스턴스 [1] 참고 1. 인스턴스 메서드(instance method) 함수 첫 번째 인자에 클래스 객체 자기 자신을 의미하는 self 가 들어간다. 예시코드 class Test: a = 1 def __init__(self): self.b = 2 def abc(self): print("abc") print(self.a) def abcd(self): print('abcd') print(self.b..
장고 ORM을 이용하여 DB에서 데이터를 불러올 때 내가 원하는 데이터만을 가져오게 하기 위해서는 필터를 사용해야 한다. 기본적으로 model이름.objects.all()을 할 경우 해당 테이블의 모든 데이터를 가져온다. 특정한 값만 가지고 오고 싶은 경우 이렇게 하면 상당히 비효율적이다. 이때 filter를 이용하여 원하는 값만 가져올 수 있다. model이름.objects.filter() 이것을 이용하면 된다. exact - 정확히 일치하는 데이터 가져오기 iexact - 대소문자 구분 없이 정확히 일치하는 데이터 가져오기 None을 찾는 것은 Null을 찾는 것과 동일하다. model이름.objects.filter(id__exact=1) model이름.objects.filter(id__exact=N..
장고에서는 반드시 request를 매개변수로 받아온다. request는 많은 정보를 담고 있다. 우선 그냥 request를 출력해보자. # 데코레이터, csrf 토큰 검증 비활성화 @csrf_exempt def ss(request): print(request) return HttpResponse("good") 아래와 같은 출력 결과를 얻을 수 있다. WSGIRequest라는 객체가 존재하고, POST방식이고, url경로 정보가 나온다. 이번엔 GET 방식으로 요청해 보았다. 아래와 같이 쿼리까지 모두 나온다. Django가 http request를 받으면, 해당 정보들을 가지고 WSGIRequest 객체를 생성한다. 이를 view의 첫 번째 매개변수로 전달한다. 그렇기 때문에 꼭 request라고 하지 ..
Floyd-Warshall 플로이드 알고리즘, 로이-와샬 알고리즘, 로이-플로이드 알고리즘, WIFI 알고리즘 등으로 불린다. 그래프에서 최단경로를 찾는 문제를 해결하는 알고리즘의 한 종류이다. 다익스트라 알고리즘의 경우 가중치가 양수이고, 하나의 시작점으로부터 다른 모든 버텍스(vertex, node, 노드)까지의 최소 비용을 구한다. 플로이드 와샬은 이 다익스트라를 여러 번 행하여 모든 버텍스에서 다른 모든 버텍스까지의 경로를 구하는 알고리즘이다. 시간 복잡도는 O(n^3)이다. 이론적으로 이해하는 데에는 시간이 조금 걸리지만 코드는 그냥 반복문 세 개 갖다 쓰는 거라 매우 간단하다. 이론 현재 나의 위치가 i이고, j까지 가는 최단경로를 알고 싶다. i에서 j로 한 번에 가지는 경우가 최단거리 일 ..