본문 바로가기

분류 전체보기

(146)
[C++] 트럭 (13335번) 트럭 문제 강을 가로지르는 하나의 차선으로 된 다리가 하나 있다. 이 다리를 n 개의 트럭이 건너가려고 한다. 트럭의 순서는 바꿀 수 없으며, 트럭의 무게는 서로 같지 않을 수 있다. 다리 위에는 단지 w 대의 트럭만 동시에 올라갈 수 있다. 다리의 길이는 w 단위길이(unit distance)이며, 각 트럭들은 하나의 단위시간(unit time)에 하나의 단위길이만큼만 이동할 수 있다고 가정한다. 동시에 다리 위에 올라가 있는 트럭들의 무게의 합은 다리의 최대하중인 L보다 작거나 같아야 한다. 참고로, 다리 위에 완전히 올라가지 못한 트럭의 무게는 다리 위의 트럭들의 무게의 합을 계산할 때 포함하지 않는다고 가정한다. 예를 들어, 다리의 길이 w는 2, 다리의 최대하중 L은 10, 다리를 건너려는 트럭..
[C++] 백준 파이프 옮기기1 (17070번) 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부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프..
[python] poetry로 패키지 관리하기 poetry는 의존성 관리와 패키징을 돕는 도구이다. 너의 프로젝트의 의존성 라이브러리들의 선언을 돕고, 관리해준다. 반복적인 설치와, 배포를 위한 빌드도 돕는다. python 3.7+ 이상만 지원한다. Linux, macOS, Windows 에서 사용이 가능하다. Windows 에서의 사용법 cmd를 열어서 아래를 입력한다. pip install poetry 나는 pycharm(파이참) IDE를 이용하기 때문에 이 안에서 관리를 해볼 것이다. 1. 프로젝트 생성 2. poetry 사용 파이참 터미널에 아래를 입력한다. poetry init 그 뒤에 나오는 질문들을 읽고 바꾸고 싶은 것이 있으면 바꾸고, 아니면 그냥 엔터 연타하면 .toml 파일이 하나 생성된다. 3. 원하는 패키지 설치 poetry D..
[python] 메서드 (method) 클래스 내에 작성된 함수를 메서드(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..
[Django, DRF] 장고 쿼리 필터 (query filter) 장고 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..
[Django] request 매개변수 장고에서는 반드시 request를 매개변수로 받아온다. request는 많은 정보를 담고 있다. 우선 그냥 request를 출력해보자. # 데코레이터, csrf 토큰 검증 비활성화 @csrf_exempt def ss(request): print(request) return HttpResponse("good") 아래와 같은 출력 결과를 얻을 수 있다. WSGIRequest라는 객체가 존재하고, POST방식이고, url경로 정보가 나온다. 이번엔 GET 방식으로 요청해 보았다. 아래와 같이 쿼리까지 모두 나온다. Django가 http request를 받으면, 해당 정보들을 가지고 WSGIRequest 객체를 생성한다. 이를 view의 첫 번째 매개변수로 전달한다. 그렇기 때문에 꼭 request라고 하지 ..
[C++] 플로이드 와샬 (Floyd-Warshall Algorithm) Floyd-Warshall 플로이드 알고리즘, 로이-와샬 알고리즘, 로이-플로이드 알고리즘, WIFI 알고리즘 등으로 불린다. 그래프에서 최단경로를 찾는 문제를 해결하는 알고리즘의 한 종류이다. 다익스트라 알고리즘의 경우 가중치가 양수이고, 하나의 시작점으로부터 다른 모든 버텍스(vertex, node, 노드)까지의 최소 비용을 구한다. 플로이드 와샬은 이 다익스트라를 여러 번 행하여 모든 버텍스에서 다른 모든 버텍스까지의 경로를 구하는 알고리즘이다. 시간 복잡도는 O(n^3)이다. 이론적으로 이해하는 데에는 시간이 조금 걸리지만 코드는 그냥 반복문 세 개 갖다 쓰는 거라 매우 간단하다. 이론 현재 나의 위치가 i이고, j까지 가는 최단경로를 알고 싶다. i에서 j로 한 번에 가지는 경우가 최단거리 일 ..
스머프 공격 (Smurf attack) 스머프 공격 이란? 공격자가 여러 대의 컴퓨터를 이용해 source IP를(출발 IP) 희생자의 IP로 변경하여 ICMP 패킷(ICMP Echo Request)들을 컴퓨터 네트워크에 broadcast 하여 희생자의 컴퓨터에 엄청나게 많은 응답 패킷(ICMP Echo Reply)이 도착하도록 만들어 컴퓨터의 동작이 불가능해질 정도로 느려지게 만드는 공격을 뜻한다. 분산 서비스 거부 공격(Ddos)의 일종이다. 이름이 스머프 공격인 이유는 공격에 사용하는 프로그램의 이름이 '스머핑'이기 때문이다. ICMP - TCP/IP (Network Layer)에서 패킷 처리에 문제가 발생할 경우 이를 source IP에게 알려주는 프로토콜이다. 패킷이 어떤 에러로 인해 목적지에 도달하지 못했을 경우, 발생한 에러를 s..