전체 글 481

[Django 07] CRUD

CRUD는 소프트웨어가 기본적으로 갖는 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 의미한다. Django를 통해 간단한 게시판을 만들어보며 Django의 프로젝트 흐름을 파악하고 CRUD를 이해한다. 프로젝트 생성 ①. CRUD라는 프로젝트를 생성한다. $ django-admin startproject CRUD . ②. 게시판을 만들 posts라는 애플리케이션을 생성한다. $ python manage.py startapp posts ③. 프로젝트 폴더의 settings.py에서(CRUD/settings.py) 생성된 애플리케이션을 등록한다. Model 만들기 ①. 애플리케이션 폴더의 models.py에서 Post라는 클래스를 정의하여 속성들의 데..

WEB 2021.03.11

[백준 14889] 스타트와 링크 cpp

문제 스타트링크에 다니는 사람들이 모여서 축구를 한다. 모인 사람은 항상 짝수인 N명이 모였으며 스타트팀과 링크팀으로 나누려고 한다. 이때 i와 j가 팀이 되었을 때 능력치가 있는데 N명이 두 팀으로 나눴을 때 각각 팀의 능력치를 구하여 두 팀의 능력치 차이가 최소가 되도록 구하라. 입력 첫째 줄에 N이 주어진다. 둘째 줄부터 N개의 줄에 N개의 능력치가 주어진다. i번째 줄의 j번째 수는 i와 j가 팀이 되었을 때 능력치이다. 출력 스타트팀과 링크 팀의 능력치의 차이가 최소가 되는 값을 출력한다. 접근 먼저 두 개의 팀으로 나눴다. 스타트팀은 1, 링크팀은 0으로 표시를 한다. 이후 능력치를 조사하는데 2차원 배열을 탐색할 때 행과 열의 인덱스가 모두 1일 때는 스타트 능력치에 더하고 모두 0일 때는 ..

[백준 14888] 연산자 끼워넣기

문제 N개의 수로 이루어진 수열이 있다. 수와 수 사이에 N-1개의 연산자를 끼워넣어 최댓값과 최솟값을 구하라 사용할 수 있는 연산자의 수는 주어진다. 입력 첫째 줄에 수의 개수 N(2이상 11이하)이 주어진다. 둘째 줄에 N개의 수가 주어지며 셋째 줄에 + - x / 순으로 개수가 주어진다. 출력 첫째 줄에 최댓값 둘째 줄에 최솟값 접근 수열에서 앞의 숫자를 시작으로 그 다음 수와 연산을 진행한다. 연산자는 사용할 수 있는 개수가 정해져있기 때문에 연산자의 수가 담긴 리스트를 탐색하여 연산자가 남아있다면 그에 해당하는 연산을하도록 한다. 구현 필요한 정보를 입력받으며 최댓값과 최솟값 비교를 위한 수를 설정한다. 중간 결과를 포함한 모든 결과가 -10억 이상 10억 이하이기 때문에 아래와 같이 설정해주었..

[Django 06] Model

Django는 MTV 패턴을 갖고있으며 그 중 Model은 저장된 데이터의 구조를 의미하며 Python 객체를 통해 데이터에 접근하고 관리한다. 데이터베이스의 구조 스키마 : 데이터베이스 내에 데이터들이 어떠한 구조로 저장이 되는지를 명세한 것 테이블 : 행과 열로 정렬된 데이터의 집합 행 : 가로에 있는 데이터들로 테이블의 데이터를 행에 저장한다. 열 : 세로에 있는 데이터들로 같은 열에 있는 데이터는 같은 데이터 형식을 갖는다. 기본키 : 각 행을 구별하는 Primary Key인 기본 키가 존재하며 Django에서는 자동적으로 생성해준다. ORM 모델을 알아보기 전에 ORM을 먼저 이해해야 한다. ORM은 객체-관계 매핑으로 객체지향 언어에서 클래스로 정의한 객체와 관계형 데이터베이스에서 테이블을 자..

WEB 2021.03.10

[백준 14501] 퇴사

www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 접근 뒤에서부터 접근하고자 했다. 아직까지 DP의 개념을 완벽하게 이해하고있지 않아 뒤에서부터 어떻게 메모이제이션을 진행할지 감이 잡히지 않았다. 그래서 다음과 같이 생각하기로 했다. 뒤에서부터 경우의 수에 따라 최댓값을 구하자. 즉 뒤에서부터 진행하면서 해당 날짜에 상담을 했을 때와 안했을 때의 수익 중 최댓값을 채워나간다. 이러한 개념으로 현재 날짜에 상담을 한다면 T일 후에있는 상담을 할 수 있기 때문에 두 개의 수익을 더하고 현재 날짜에 상담을 안한다면 다음 날 상담을 하게되므로 이 두 개의 경우의 수 중 최댓값을 채워나가도록 한다. 구현 ..

[백준 15657] N과 M (8)

문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증..

[Django 05] form 사용하기

form 태그는 사용자가 입력한 데이터를 받아 처리할 수 있다. Django에서 form태그를 활용하여 입력받은 데이터를 처리하여 출력해보자. form 태그의 구성 form 태그는 아래와 같이 구성되어있다. 안에서 입력받은 데이터들은 action 속성에서 정의한 주소로 보내진다. 또한 form 태그는 기본적으로 method가 GET으로 설정되어있다. GET : 데이터를 조회하기 위한 명령이며 조회할 데이터를 URL에 포함시켜 전달한다. POST : 리소스를 생성하고 변경하기 위한 명령이며 데이터를 body안에 포함시켜 전달한다. label의 for과 input의 id의 값을 같게하여 label과 input이 짝을 지을 수 있도록한다. input의 type에는 다양한 종류가 있으며 여기서는 문자열을 입력받..

WEB 2021.03.09

[Django 04] URL 분리하기

프로젝트의 규모가 커질수록 애플리케이션별로 URL을 분리하여 사용하는 것이 효율적이다. 또한 같은 이름의 HTML문서가 있다면 어떤 페이지를 출력할까? urls.py에 URL 등록하기 기존에는 프로젝트의 urls.py에 애플리케이션들의 URL을 등록해서 사용하였다. 아래와 같이 applications라는 애플리케이션을 생성하고 app/이라는 URL을 사용자가 요청했을 때 views.py의 index함수가 요청을 받고 html문서를 보여주도록 한 것이다. 하지만 또다른 애플리케이션을 생성하여 URL을 등록할 때 같은 이름의 views 모듈이 존재한다. 이러한 경우와 각각의 애플리케이션을 독립적으로 분리하기위해 URL을 분리할 필요가있다. from django.contrib import admin from ..

WEB 2021.03.09

[Django 03] 템플릿 상속

프로젝트가 커질수록 만들어야하는 페이지도 증가한다. 매번 일정부분 똑같은 내용을 모두 새롭게 만들지 않고 기본 템플릿을 상속하여 페이지를 만들어간다면 효율적이다. Django에서는 템플릿을 상속하는 기능을 제공하고 있다. settings.py ->TEMPLATES 상속을 사용하기 위해서는 TEMPLATES의 DIRS이라는 리스트에 디렉터리를 설정해줘야한다. DIRS = [BASE_DIR / [프로젝트 이름] / templates] 다음과 같이 기본이 되는 템플릿을 프로젝트에 생성한다. 그리고 {% block %} {% endblock %}을 지정한다. 다른 HTML문서에서는 이 block부분만 채우면된다. 그리고 title과 content라는 이름을 함께 적었는데 다른 HTML문서에서 사용할 때 정의한 ..

WEB 2021.03.08

[Django 02] Django Template Language(DTL)

Django에서 Template에 제공하는 기능으로 변수, 조건, 반복 등을 HTML 문서에서 실행할 수 있다. views.py에서 렌더링을 할 때 해당 HTML에 문서에 변수도 함께 전달하여 HTML 문서 내에서 views.py에 정의된 함수에서 처리된 데이터를 활용할 수 있다. Variables 변수는 다음과 같이 사용할 수 있으며 두 개의 중괄호 안에 변수를 대입하면 템플릿 엔진이 적절한 값으로 변환한다. 변수 이름은 영문자와 "_"로 구성될 수 있으며 "_"로 시작할 수는 없다. 점(.)을 사용하여 변수의 속성에 접근할 수도 있다. {{ Variable }} Filters 필터를 사용하여 변수를 수정할 수 있다. 필터는 아래와 같이 변수 다음에 "|"으로 사용할 수 있다. {{ Variable |..

WEB 2021.03.08
728x90
반응형