[백준 1325번] 파이썬 - 효율적인 해킹
https://www.acmicpc.net/problem/1325 B 컴퓨터를 신뢰하는 관계라면, B 컴퓨터만 해킹하여도 A는 자동으로 해킹된다. 이 때, 한 컴퓨터를 해킹해서 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터 번호를 출력하여라! 여러 대가 있다면, 오름차순 출력 # 접근 방법 자식 노드만 확인하는 것이 아닌 그 컴퓨터를 '신뢰하는' 또 다른 컴퓨터까지 확인해 주어야한다. 따라서 BFS를 확인하여 각 컴퓨터마다 해킹가능한 컴퓨터 수를 기록해주고 가장 많이 해킹하는 컴퓨터를 출력한다. BFS 기본 예제 문제와 비슷해보이지만, 1번이 아닌 모든 컴퓨터를 체킹한다는 것이 다르다. 그러다보니 많은 메모리, 시간을 사용하게 되고 PyPy로 제출하지 않는 이상 통과가 힘들었다.. ```python # N개..
2022.09.06
[백준 11729번] 파이썬 - 하노이 탑 이동순서
https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 프로그래밍을 하며 '재귀'를 접하게 되면 가장 먼저 만나게 되는 문제라고 볼 수 있다. 그만큼 유명하고 재귀를 가장 잘 표현하였다고 생각이 드는 것이 '하노이의 탑'이라고 볼 수 있다. # 조건 세 개의 장대가 있고 첫 번째 장대에는 서로 크기가 다른 N개의 원판이 쌓여있다. 한 번에 한 개의 원판만 이동 가능하며 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. # 접근..
2022.09.06
no image
[Django] Allowed HTTP methods
목차 1. 데코레이터(Decorator) 2. allowed HTTP methods 1. 데코레이터(Decorator) view 함수를 작성했다면 이번에는 View decorator라는 것을 이용하여 단단하게 만들어주자. 기존에 작성된 함수에 기능을 추가하고 싶을 때, 해당 함수를 수정하지 않고 기능을 추가해주는 함수 Django는 다양한 HTTP 기능을 지원하기 위하여 view 함수에 적용할 수 있는 여러 데코레이터를 제공한다. 위 코드에서 보이듯이 내부 수정이 아닌 `@hello`을 통하여 기능 추가를 해준 것을 출력을 통해 확인할 수 있다. 이런 데코레이터를 이용하여 단단하게 만드는 것이 어떤 것인지 알아보자! 2. Allowed HTTP methods django.views.decorators.h..
2022.09.06
no image
[Django] Handling HTTP requests
form, Modelform을 통하여 view 함수의 변화를 배워왔는데 가장 중요!! 한 것은 로직, 즉 순서를 잘 지키면서 이해한 상태로 작성하자는 것이다. 암기가 아닌 이해가 필요한 과목이다. 이번 글에서는 "HTTP requests 처리에 따른 view 함수 구조 변화"를 알아보자. 목차 1. HTTP requests 2. CREATE 3. UPDATE 1. HTPP requests 앞에서 작성하였던 new-create, edit-update의 view 함수 역할을 잘 살펴보면 하나의 공통점과 하나의 차이점이 존재한다. 공통점 new-create는 모두 CREATE 로직을 구현하기 위한 공통 목적 edit-update는 모두 UPDATE 로직을 구현하기 위한 공통 목적 차이점 new와 edit는 G..
2022.09.06
no image
[Django] ModelForm
앞서 Form Class를 작성해보며 느낄 수 있었던 것은 "Model이랑 중복되는 부분이 너무 많다"라는 것이었다. 우리는 이미 Article Model Class에 필드에 대한 정보를 작성하였는데 이를 Form에 맵핑하기 위하여 Form Class를 재정의 해야만 하였다. 목차 1. ModelForm 2. ModelForm with view Functions 3. Form과 ModelForm 비교 4. Widgets 활용하기 1. ModelForm ModelForm을 사용하면 위에서 말했던 중복되는 부분들을 제외하고 Form을 더 쉽게 작성할 수 있게 해 준다. Model을 통해 Form Class를 만들 수 있는 helper class ModelForm은 Form과 똑같은 방식으로 View 함수에서..
2022.09.06
no image
[Django] Form
우리는 지금까지 HTML form, input 태그를 통해서 사용자로부터 데이터를 받았고 현재 우리의 Django는 들어오는 요청을 모두 수용하고 있다. 하지만 분명 이런 요청 중에는 비정상적인 혹은 악의적인 요청이 있다는 것을 생각해야 한다!! 목차 1. Form 2. Widgets 1. Form 위에서 적은 것처럼 사용자가 입력한 데이터가 우리가 원하는 데이터 형식이 맞는지에 대한 유효성 검증이 반드시 필요. 이런 검증은 많은 부가적인 것들을 고려해서 구현해야 하고, 이는 개발 생산성을 늦출뿐더러 쉽지 않은 작업이다. Django Form은 이 과정에서 과중한 작업과 반복 코드를 줄여줌으로써 훨씬 쉽게 유효성 검증을 진행할 수 있도록 만들어 준다!! # Form에 대한 Django의 역할 Form은 ..
2022.09.06
no image
[Django] CRUD_with_view_functions2 + Admin
이전 글에서는 CREATE와 READ에 대해서 Djago에 적용시키며 배워보았다. 이번 글에서는 남은 UPDATE/DELETE에 대해서 알아보자. 목차 1. DELETE 2. UPDATE 3 Admin Site 1. DELETE # READ 2 (detail page) 개별 게시글 상세 페이지 제작 모든 게시글마다 view function과 템플릿 파일을 만들 수는 없기 때문에 글의 번호(pk)를 활용하자 urls 우선 URL로 특정 게시글을 조회할 수 있는 번호를 받자. 정수형이기 때문에 를 이용해주었다. views view 함수에선 Article.objects.get(pk=pk)에서 1. 오른쪽 pk는 variable routing을 통해 받은 pk 2. 왼쪽 pk는 DB에 저장된 레코드의 id칼럼 ..
2022.09.05
no image
[Django] CRUD_with_view_functions1
저번 글에서 기본적인 데이터 처리 기능 4가지인 Create/Read/Update/Delete에 대해서 알아보았는데 view.py 내부에 함수를 만들어보며 생기는 문제, 시각적 이미지를 알아보자. 목차 1. 사전 준비 2. Read / Create 3. redirect() 4. POST method 5. CSRF 1. 사전 준비 앞서 배웠던 경로 설정 및 base 템플릿 작성을 해보고 시작하자 base 템플릿 작성 bootstrap CDN 및 템플릿 추가 경로 작성 URL 분리 및 연결 index 페이지 작성 index 페이지 작성 순서와 같이 항상 urls -> views -> templates의 순서를 지키면서 작성하자!! 2. READ / CREATE # READ 1(index page) index..
2022.09.05
no image
[Django] QuerySet API
목차 1. 사전 준비 2. QuerySet API 3. CRUD 1. 사전 준비 우선 시작하기에 앞서 편의를 위한 추가 라이브러리 설치해주자! pip install ipython # 파이썬 기본 쉘보다 더 강력한 파이썬 쉘 pip install django-extensions # Django 확장 프로그램 모음으로 shell_plus, graph model 등 다양한 확장 기능 제공 pip freeze > requirements.txt Shell 운영체제 상에서 다양한 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램 셀(껍데기)은 사용자와 운영 체제의 내부 사이의 인터페이스를 감싸는 층이기 때문에 이러한 이름이 붙었다. "사용자 셸 운영체제" Python Shell 파이썬 코드를 실행해주는 인터프..
2022.09.04