전체 글 481

[Django 01] 첫 번째 프로젝트 생성하기

새로운 프로젝트 생성하기 이제 Django를 통해 프로젝트를 생성해보자. 하나의 프로젝트를 생성할 때는 다음과 같은 명령을 한다. startproject 다음에 본인이 원하는 프로젝트 이름을 입력하여 프로젝트를 생성한다. 프로젝트 이름 다음에 현재 경로를 나타내는 "."을 추가하면 현재 경로에 바로 프로젝트가 생성이된다. $ django-admin startproject [프로젝트 이름] 프로젝트가 생성되었다면 파일의 구조는 다음과 같을 것이다. manage.py : 웹 서버를 실행하고 새로운 애플리케이션을 생성하는 등의 명령을 한다. __init__.py : Python에게 해당 디렉토리를 패키지처럼 다룰 수 있도록 알려주는 파일이다. settings.py : Django 프로젝트의 환경 및 구성을 저..

WEB 2021.03.08

[Django 00] Intro

Django 공식 문서와 MDN으로 Django에 대해 정리를 한다. Django는 파이썬 웹 프레임워크 웹 프레임워크는 어떠한 개발자들이 웹 개발을 쉽고 편리하게 할 수 있도록 뼈대를 만들어 놓은 것이며Django는 파이썬을 사용하여 만들어진 웹 프레임워크이다. 프레임워크를 사용할 때는 프레임워크의 규칙에 따라서 개발이 이루어져야하며 자유도가 낮다. Django의 코드는 어떻게 생겼을까? 위의 그림은 MDN에서 설명하는 Django의 흐름이다. 각각의 역할에 따라 코드들이 분리되어 있어 확장성과 유지보수가 쉽다는 장점이 있다. 웹 브라우저로부터 HTTP 요청을 받는다면 urls.py에서 요청을 받아 views.py에 전달한다. views.py에는 요청받은 데이터를 처리하기위한 함수가 정의되어 있다. 함..

WEB 2021.03.08

[Level 3] 단속카메라

programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 접근 탐욕법 알고리즘에 분류된 문제이다. 그래서 어떠한 기준으로 매번 최적을 선택할지 고민을 했다. 먼저 정렬을 했는데 진입한 시점을 기준으로 오름차순으로 정렬을 하였다. 이후 규칙을 찾아보려고 했고 나가는시점을 기준으로 오름차순 정렬도 해보았다. 나가는시점을 기준으로 정렬했을 때 나가는 시간을 기준으로 카메라를 설치하고자 하였다. 즉, 정렬 후에는 첫 번째 오는 시간은 가장 빨리 나가는 차량이기때문에 해당 차량이 나가는 시점에 카메라를 설치한다. 이후 설치한 카메라의 시점을 통해..

[Level 2] JadenCase 문자열 만들기

programmers.co.kr/learn/courses/30/lessons/12951 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 programmers.co.kr 접근 공백다음의 글자는 대문자로 만들고 나머지는 소문자로 만들어서 answer에 추가한다. 구현 첫 번째 인덱스가 영문이라면 대문자로 만들어 answer에 추가한다. 첫 번째 인덱스 이외에는 이전의 문자가 공백일 때 현재문자를 대문자로 만들어 추가하고 아닌 것은 모두 소문자로 만들어 추가한다. def solution(..

[백준 15652] N과 M (4)

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

[백준 10814] 나이순 정렬

문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 접근..

[백준 11727] 2 x n 타일링 2

www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 접근 n에 따라 규칙을 찾고 점화식을 세우려했다. 왜냐하면 크기가 n개일 때는 n-1개에서 특정 크기가 추가되고 n-2개에서도 추가되어 만들어진 것이기 때문이다. 그래서 점화식을 세운다면 f(n) = f(n-1) + 2xf(n-2)가 된다. 구현 n이 최대 1000개가 들어오기 때문에 0으로 초기화된 길이 1000인 리스트를 생성하고 n=1일 때는 1개, n=2일 때는 3개로 설정해두며 for문을 통해 입력된 n개일 때를 구한다. impor..

[Level 3] 멀리 뛰기

programmers.co.kr/learn/courses/30/lessons/12914 코딩테스트 연습 - 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2 programmers.co.kr 접근 시간초과가 날 것 같았지만 백트래킹으로 시도를 해보았다. 역시 시간초과가 발생했다. 그래서 1칸, 2칸까지 뛸 수 있다는 것에 동적계획법이 생각이 났고 점화식을 세우려고 했다. 경우의 수를 봤을 때 f(n) = f(n-1) + f(n-2)라는 점화식을 세울 수 있었고 그대로 구현을 하였다. 구현 n은 1이상 200..

[백준 1697] 숨바꼭질

문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 접근 BFS 탐색을 통해 현재위치에서 갈 수 있는 곳을 방문하면서 K..

[백준 1676] 팩토리얼 0의 개수

문제 N!에서 뒤에서부터 봤을 때 0이 아닌 수가 나올 때까지 0의 개수를 구하라. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 접근 팩토리얼을 구하고 리스트로 변경한 후에 뒤에서부터 0의 개수를 카운트한다. 구현 먼저 반복문을 통해 팩토리얼을 구하여 total에 저장한다. 이후 total을 리스트로 변환하여 각 인덱스에 숫자가 차례대로 위치하도록 한다. 이후 reversed()를 통해 리스트를 뒤집은 후 원소를 꺼내어 0이 나올 때까지 카운트한다. N = int(input()) total = 1 for n in range(1, N+1): total *= n total = list(map(int, str(total))) answer = 0 for ..

728x90
반응형