Computer Science 387

점프 투 장고 #2 | 장고 URL, 뷰, ORM, 모델 익히기

[참고] 2장 장고의 기본 요소 익히기! - 점프 투 장고 (wikidocs.net) 2장 장고의 기본 요소 익히기! 이 장에서는 장고 개발을 하는 데 필요한 기본 내용을 모두 다룰 것이다. 여러분이 앞으로 만들 '파이보'가 완성된 빌딩이라면 이 장은 기초 공사에 해당한다. 기초 공사를 탄 ... wikidocs.net 예제로 배우는 파이썬 프로그래밍 - DB 설정과 Migration (pythonstudy.xyz) URL과 뷰 urls.py views.py 장고의 개발 흐름 url 분리 장고 URL이란? 장고 URL을 만들어보자. 장고 url에 원하는 url을 만들고, url에 일치하는 뷰를 연결해주는 것이다. views.py의 views 함수는 urls에서 view로 매핑해준다. 로컬 호스트인 127..

백준 C++ | #13 BOJ1436 영화감독 숌 C++ 문제 풀이

1436번: 영화감독 숌 (acmicpc.net) 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 666이 들어가는 N번째 작은 수를 찾는 게 너무 어려워서 그냥 666부터 시작해서 1씩 키워가면서 노가다로 찾기로 했다(tmp++;) #include #include int main() { int n; std::cin >> n; int tmp=666; while (true) { // tmp에 한번이라도 666이 등장한다면 if (std::to_string(tmp).find("666") != std::strin..

점프 투 장고 #1 | 벡엔드 프레임워크, 장고 시작하기

[참고] 1-03 장고 개발 환경 준비하기 - 점프 투 장고 (wikidocs.net) 장고란 무엇인가? 장고(Django)는 파이썬으로 만들어진 웹 프레임워크이다. 웹 사이트를 빠르게 개발할 수 있도록 웹 사이트 개발에 필요한 회원가입, 로그인, 로그아웃, 쿠키, DB 등의 기능을 미리 만들어둔 것이 웹 프레임워크이다. 장고는 The web framework for perfectionists with deadlines. 라는 문구를 가지고 있다. 그만큼 빨리 개발할 수 있게 해주는 웹 프레임워크라고 한다. 파이썬 가상환경 준비하기 환경 : WSL sudo apt-get update sudo apt install python3.8-venv 파이썬 가상환경에 장고를 설치하기 위해, 파이썬 venv 가상환경..

백준 C++ | #12 BOJ1110 더하기 사이클 C++ 문제 풀이

1110번: 더하기 사이클 (acmicpc.net) 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net #include int main() { // 첫째 줄에 N이 주어진다. int n; std::cin >> n; // 처음에 주어진 수의 가장 오른쪽 자리 수와 // 구한 합의 가장 오른쪽 자리 수를 이어 붙여 새로운 수를 만들 수 있다. // 몇 번만에 원래 수로 돌아올 수 있을까? int tmp = n; int next = -1, trial = 0; while (next != n) { // 각 ..

백준 C++ | #11 BOJ1966 프린터 큐 C++ 문제 풀이

1966번: 프린터 큐 (acmicpc.net) 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 컴파일 에러가 자꾸 났는데 알고보니 #include 을 안하고 std::sort를 써서 그런 거였다. #include #include #include #include #include int main() { int testcase; std::cin >> testcase; std::vector answer; for (int i = 0; i < testcase; i++) { // 문서의 개수 n // 출력 순서(우선순위 큐..

백준 C++ | #10 BOJ10773 제로 C++ 문제 풀이

10773번: 제로 (acmicpc.net) 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 처음으로 풀어본 STL 문제였다. 문제를 풀면서 어떻게 공백('\n')을 받아 루프를 멈출지를 엄청 고민했는데, c++ - 빈 줄까지 파일 읽기 - 스택 오버플로 (stackoverflow.com) C++ string을 int로 변경하는 방법 (tistory.com) 알고보니 첫 입력으로 입력의 개수가 주어져 for문으로 구현하면 되었다. #include #include #include..

백준 C++ | #9 BOJ4344 평균은 넘겠지 C++ 문제 풀이

4344번: 평균은 넘겠지 (acmicpc.net) 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net "대학생 새내기 90%는 자신이 반에서 평균은 넘는다고 생각한다."로 시작하는 슬픈 문제 테스트케이스 사이즈에 맞게 배열을 생성해서 학생들의 점수를 입력받고, 평균을 넘는 케이스의 비율을 계산해주면 된다. 제출했을 때 컴파일에러가 발생했는데, 이건 int로 계산해주어야 하는 배열의 크기 변수를 double로 정의해서 생긴 문제였다. double* a = new double[array_size] 이 부분에서 array_size 변수가 double이라 컴파일 에러가 난 것. 참고. 프로그래밍..

백준 C++ | #8 BOJ3048 개미 C++ 문제 풀이

3048번: 개미 (acmicpc.net) 왼쪽에서 오른쪽으로 이동하는 개미 사이 사이에 오른쪽에서 왼쪽으로 이동하는 개미 그룹이 들어간다는 발상으로 풀었다. 예를 들면, A B C 와 D E F가 만나는 상황에서 _ A _ B _ C _ 네 개의 빈칸에 DEF가 들어간다. 이 네 개의 빈칸을 벡터로 만들어 T초에 맞게 코드를 짰다. 다 풀고나서 제출했더니 메모리 초과 문제가 발생하였다. 알고보니 j=0으로 시작하는 for 문에서 j-1 indexing을 해서 생긴 문제였다. j=1부터 시작하는 것으로 바꾸어서 해결했다. #include #include #include #include int main() { // 첫번째 그룹, 두번째 그룹의 사이즈 int n1, n2; std::string ant1_tm..

Backend 기초 #3 | API, Rest API란? (Application programming interface)

API Application Programming Interface API란? API는 두 소프트웨어가 통신할 수 있게 해주는 일종의 매커니즘이다. API는 데이터를 어떤 방식으로 요청할 수 있는지(요청), 어떤 데이터를 제공받을 수 있는지(응답) 등을 정한다. 예를 들면, 기상청 소프트웨어와 휴대폰의 날씨 앱을 예시로 들 수 있다. 휴대폰 날씨 앱에서 기상청 소프트웨어가 가지고 있는 기상 데이터를 기상청 API를 통해 받아오는 식이다. API 아키텍처는 주로 클라이언트와 서버로 설명된다. 클라이언트는 휴대폰 날씨 앱과 같이 데이터를 받아오기 위해 요청을 보내는 측을 말하고, 서버는 기상청 소프트웨어처럼 요청 받은 내용을 처리하는 측을 의미한다. REST API REST API는 웹에서 가장 많이 사용되..

Backend 기초 #2 | 쿠키(Cookie), 세션(Session)이란?

웹 상에서 클라이언트와 서버가 정보를 주고 받는 방식을 규정하는 HTTP는 비연결 프로토콜(Connectionless Protocol), 비상태 프로토콜(Stateless protocol) 특성으로 인해 페이지의 상태를 기억하지 못한다. 이 때문에 사용자는 웹페이지에 접속할 때마다 새롭게 로그인하는 등 이전에 수행했던 작업을 반복해야할 수 있다. 이를 극복하기 위해 쿠키(Cookie)와 세션(Session)이 등장한다. 쿠키(Cookie)와 세션(Session)은 모두 웹 통신에서 필요한 정보를 저장하기 위한 방식이다. 쿠키(Cookie) 쿠키(Cookie)는 서버에 요청해서 사용자 PC에 저장하는 client의 정보/상태 등의 데이터를 의미한다. 쿠키(Cookie)에 포함되는 데이터에는 사용자 ID, ..