[Django] model 만들고 활용하기
·
Dev Tool/Django
django의 app인 polls 폴더를 살펴보면 models.py라는 파일이 존재한다. 이 파일은 데이터베이스의 모델을 정의하는 곳으로, Django 애플리케이션의 데이터 구조와 관련된 정보를 포함하고 있다. 각각의 모델은 데이터베이스 테이블의 구조를 정의하고 이를 통해 데이터를 편집할 수 있게 해준다. 이러한 기능을 ORM이라고도 부른다.일반적으로 models.py 파일은 Django 애플리케이션의 각각의 앱(app) 폴더 내에 위치한다. 이 파일은 Python 클래스로 작성되며, 각 클래스는 데이터베이스 테이블을 나타낸다. 모델 클래스의 속성은 데이터베이스의 각 열(Column)을 나타낸다. 이러한 속성은 Django에서 제공하는 다양한 필드 타입으로 정의된다. 예를 들어, 문자열을 저장하는 필드에..
[Django] Django App 생성하기
·
Dev Tool/Django
Django에서 앱은 재사용 가능한 기능의 작은 모듈을 뜻한다. 예를 들어 인스타그램이라는 하나의 큰 프로젝트가 있다면 그 안에 있는 탐색 기능, 다이렉트 메시지 기능 등등이 앱이 되는 것이다. 이러한 각 앱은 모델, 뷰, 템플릿 및 URL 패턴을 포함하여 독립적으로 작동할 수 있다. 이렇게 하면 앱을 개발하고 유지 관리하는게 쉬우며, 여러 프로젝트에서 재사용할 수 있게된다.Django APP 생성하기기존에 만들어두었던 mysite 프로젝트 폴더 내부로 들어간뒤, 의견조사용 앱 polls를 생성하였다.$ python manage.py startapp pollsmysite만 생성되어 있었을때는 http://127.0.0.1:8000/ 에 접속하면 django 초기 화면이 떴었다. 이번에 만든 polls 앱..
[Django] 프로젝트 생성하고 서버 실행하기
·
Dev Tool/Django
Django는 파이썬으로 제작된 웹 프레임워크인 만큼 Django를 설치하려면 그에 앞서 먼저 Python을 설치해주어야 한다.https://www.python.org/downloads/ Download PythonThe official home of the Python Programming Languagewww.python.org 해당 링크로 들어가 가장 최신 버전의 Python을 다운받고 실행해주면 된다. 올바르게 설치되었는지 확인하고 싶다면 터미널에 "python" 명령어를 입력해주면된다. 아래와 같은 결과가 출력되면 올바르게 설치된 것이다.Python 3.x.y[GCC 4.x] on linuxType "help", "copyright", "credits" or "license" for more i..
[Python] 데이터 시각화 라이브러리 - Seaborn
·
프로그래밍/Python
Seaborn 개념   Seaborn은 python에서 제공하는 데이터 시각화를 위한 라이브러리이다. Matplotlib을 기반으로 만들어졌으며, 데이터 시각화를 보다 쉽고 가시적으로 진행할 수 있게끔해준다. seaborn 자체에 내장된 penguins dataset을 활용해 사용법에 익숙해져보자. 사용할 데이터 셋의 구성은 다음과 같다.species : 펭귄 종island : 서식지bill_length_mm : 부리 길이bill_depth_mm : 부리 위아래 두께flipper_length_mm : 팔 길이body_mass_g : 몸무게sex : 성별import seaborn as snsdata = sns.load_dataset('penguins') # 데이터 로드data = data.dropna() ..
[Python] 웹 스크래핑 라이브러리 - Selenium
·
프로그래밍/Python
이전 포스팅에서 알아본 BeautifulSoup는 주로 정적인 웹 페이지에서의 데이터 추출을 위해 사용되는 라이브러리이다. 하지만 우리가 평소 사용하는 웹 사이트는 동적인 웹 페이지로 구성되어있는 경우가 더 많다. 이러한 경우에 사용할 수 있는 웹 스크래핑 도구인 Selenium에 대해서 알아보자. Selenium  Selenium 이란?selenium은 웹 어플리케이션의 동적인 요소와 상호작용하기 위한 자동화 도구로 사용된다. 실제 브라우저를 제어하여 자바스크립트를 실행하고, 클릭, 텍스트 입력 등의 사용자 동작을 시뮬레이션한다. 기본적인 사용법selenium 라이브러리에 있는 webdriver 모듈을 통해 웹 사이트에 직접적으로 접근해 제어가 가능하다. 크롬을 통해 웹 사이트에 접근할 것이기 때문에 ..
[Python] 웹 스크래핑 라이브러리 - beautifulsoup
·
프로그래밍/Python
지난 포스팅에서는 웹 스크래핑과 웹 크롤링 두 가지 개념에 대해서 간략하게 알아봤었다. 오늘은 웹 스크래핑에 사용되는 Python 라이브러리 중 하나인 BeautifulSoup에 대해서 알아보자. BeautifulSoup  BeautifulSoup 란?위에서 말했듯이, BeautifulSoup는 웹 스크래핑을 위한 파이썬 라이브러리이며, 주로 HTML 및 XML 문서에서 데이터를 추출하고 구문을 분석하는 데 사용된다. 일반적으로 requests 메서드를 통해 가져온 값을 HTML로 파싱 후, 변환된 값에 beautifulSoup를 적용하며 사용한다.사용법beautifulSoup의 기본적인 사용법은 다음과 같다. 우선 라이브러리를 import한 후 객체를 생성해 메서드들을 사용하기만 하면 되기때문에 간단히..
[웹 기초] HTML 이해하기
·
프로그래밍/WEB
HTML이란?  HTML 기본 문법HTML은 기본적으로 의 구조를 가지며, 콘텐츠를 가지는 태그와 가지지 않는 태그로 구분된다. 콘텐츠를 가지는 태그는 시작 태그와 종료 태그를 가지는 한 쌍으로 존재하는 반면, 콘텐츠를 가지지 않는 태그는 단일 태그만 존재한다. 이때 단일 태그는 셀프 클로징을 통해 코드를 끝내거나, 아예 열린 상태로 두거나 한다. 콘텐츠 html 문법 사용 시 주의해야 할 점은 다음과 같다.대소문자 주의 - 태그는 가능한 소문자로 작성닫는 태그 생략 주의 ID가 중복되지 않게 주의계층 구조 유지동일한 의미의 태그 중첩 주의속성과 값 태그는 기본적으로 기능 확장을 위한 속성과 값을 가진다. --> 아무개 아무개 -->HTML 기본 문서 구조HTML의 기본적인 문서 구조는 다..
[프로그래머스] 문제풀이 - 더 맵게
·
알고리즘
사용한 풀이법 : heap풀이 과정최소값과 그 다음값을 탐색, 계산 후 다시 삽입 => 해당 연산이 조건을 충족할 때 까지 반복되어야 함. 이를 위한 자료구조가 바로 최소힙!1. heapify 메서드를 통해 scoville 리스트를 최소힙으로 초기화2. 항상 최소값을 뽑아내는 heappop 연산을 통해 min1, min2를 설정    이때, min1이 k이상이거나, 더 이상 뽑아낼 원소가 없을때는 반복문 종료3. 삽입할 원소를 계산 후, 힙에 push4. 연산이 완료 될 때마다 +1한 answer를 리턴 풀이 코드import heapqdef solution(scoville, K): answer = 0 heapq.heapify(scoville) while True: min1 =..
[자료구조] 해시 & 그리디
·
알고리즘
해시(Hash)  해시 개념해시란 해시 테이블에 Key와 Value를 매핑해서 데이터를 저장하는 자료구조이다. 주로 데이터 탐색, 삽입, 집계등의 연산을 할때 유용하며, 인덱스 값이 숫자가 아닌 문자열이나 튜플을 때도 유용하다. 하지만 최댓값과 최솟값을 찾는 문제는 자료구조 전체를 탐색해야 하기 때문에 효율성이 떨어진다는 단점이 있다.해시 (Hash) : 임의 값을 고정 길이로 변환하는 것해시 테이블 (Hash Table) : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조해싱 함수 (Hashing Function) : Key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수해시 값 (Hash Value) 또는 해시 주소 (Hash Address) : Key를 해싱 함수로 연산해서, 해쉬..
[자료구조] 이진 트리 & 힙
·
알고리즘
트리  트리정점(node)과 간선(edge)을 이용하여 데이터의 배치 형태를 추상화한 자료 구조로, 순환하는 길이 없는 그래프라고 말할 수 있다.루트 노드 (root node) : 트리의 최상단 노드리프 노드 (leaf nodes) : 트리의 최하단 노드 내부 노드 (internal nodes) : 루트와 리프 사이에 위치한 노드부모 (parent) 노드와 자식 (child) 노드 : 정점의 바로 위 노드가 부모 노드, 바로 아래 노드가 자식 노드 (부모의 부모는 조상노드, 자식의 자식은 후손 노드)노드의 수준 (level) :  root로 부터 각각의 노드까지 도달하기 위해 거쳐야하는 간선의 수 (root = level 0)노드의 차수 (degree) : 자식 노드의 수트리의 높이 (height) 또는..
백준 #1699 <제곱수의 합>
·
알고리즘
난이도 : 실버2소요시간 : 48m사용한 풀이법 : DP풀이 과정dp용 리스트 선언각 인덱스에는 1로만 표현했을경우의 개수를 넣는다. 즉, 인덱스 번호를 그대로 대입!루프를 돌면서 DP탐색 시작인덱스 번호보다 작은 제곱 수 중에서 가장 큰 값을 찾는다.현재 인덱스 번호에서 해당 제곱 수를 뺀 인덱스 번호에 +1을 한 후, 대소비교를 진행한다.ex) dp[10] = dp[10-33]+1 = dp[1]+1 (11 + 3*3, 2개!)+1을 하는 이유는 앞선 dp[]값에 제곱 수의 경우가 하나 추가되는 것이기 때문작성 코드import mathN = int(input())dp = [x for x in range(N+1)]for i in range(1, N + 1): for j in range(1, int(..
백준 #1463 <1로 만들기>
·
알고리즘
난이도 : 실버3소요시간 : 31m사용한 풀이법 : DP풀이 과정dp용 리스트 선언 후 0으로 초기화dp 리스트는 인덱스 숫자가 1이 되기까지의 최소연산횟수를 저장하는 용도2~n+1까지 루프 실행dp[i] = dp[i-1]+1 : i번째 수는 i-1번째 수의 dp값에 +1을 한것을 디폴트로 둔다만일 i가 2나 3으로 나누어 떨어진다면, i에 2를 나눈 몫의 수에 해당하는 dp값과 디폴트값을 비교하여 최소값을 선택한다 작성 코드n=int(input())dp = [0]*(n+1)for i in range(2,n+1): dp[i] = dp[i-1]+1 if i%2 == 0 : dp[i] = min(dp[i],dp[i//2]+1) if i%3 == 0: dp[i] = m..