Hot
-
Docker - 도커로 nginx 웹서버 구축하기
도커 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 도커로 nginx 웹서버 구축하기 docker를 통해 ubuntu:20.04에 nginx 웹서버를 구축하는 연습을 하고자 한다. ubuntu:20.04 & nginx 웹서버 [1단계] docker run -dit -p 80:8080 --name myos ubuntu:20.04 docker exec -it myos /bin/bash ubuntu:20.04 image로 docker container를 생성하고 실행시킨다. 그 이후에 docker exec 명령을 사용하여, 해당 docker container로 들어간다. *결과 : [2단계] apt-get update apt-g..
2021.12.23
-
MySQL - Foreign Key
데이터베이스 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. Foreign Key(MySQL) Foreign Key는 두 테이블 사이에 관계를 선언해서, 데이터의 무결성을 보장하는 제약이다. Foreign Key 실습환경 구축 DROP DATABASE IF EXISTS sqlDB; CREATE DATABASE sqlDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; USE sqlDB; DROP TABLE IF EXISTS userTbl; CREATE TABLE userTbl ( userID CHAR(8) NOT NULL PRIMARY KEY, name VARCHAR(10) NOT NULL, birthY..
2021.11.11
-
Algorithm - 알리바바와 40인의 도둑(동적 계획법)
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [알리바바와 40인의 도둑(동적 계획법)] 알리바바는 40인의 도둑으로부터 금화를 훔쳐 도망치고 있다. 알리바바는 평소에 잘 가지 않던 계곡의 돌다리로 도망가고자 한다. 계곡의 돌다리는 N*N개의 돌로 구성되어 있으며, 각 돌다리들은 높이가 서로 다르다. 해당 돌다리를 건널 때 돌의 높이만큼 에너지가 소비되며, 반드시 최단거리로 이동한다. 즉, 현재지점에서 오른쪽 또는 아래쪽으로만 이동해야 한다. N*N의 계곡 돌다리 격자정보가 주어지면, (1, 1)에서 (N, N)까지 가는데 드는 에너지의 최소량을 구하는 프로그램을 작성하시오. 만약, 위의 예시처럼 N=3인 돌..
2022.02.04
-
MySQL - 파일로 실행하는 SQL
데이터베이스 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 파일로 실행하는 SQL(MySQL) 파일로 SQL을 실행하고, table에 data를 한 번에 입력하는 방법을 연습하고자 한다. 파일로 SQL 실행 mysql Workbench에서 SQL 파일(student.sql)을 불러온 후, SQL 코드를 실행하는 방법이다. Worklbench File -> Open SQL Script -> student.sql file DROP DATABASE IF EXISTS student_mgmt; CREATE DATABASE student_mgmt DEFAULT CHARSET=utf8 COLLATE=utf8_bin; USE studen..
2021.11.10
-
Algorithm - 최대점수 구하기(냅색 알고리즘)
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [최대점수 구하기(냅색 알고리즘)] 이번 올림피아드대회에서 좋은 성적을 내기 위해서 현수는 선생님이 주신 N개의 문제를 풀고자 한다. 각 문제는 그것을 풀었을 때 얻는 점수와 푸는데 걸리는 시간이 주어진다. 제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 해야한다. 단, 해당 문제는 주어진 시간이 지나면 풀리는 것으로 간주하며 동일 유형의 문제는 중복해서 풀 수 없다. 위의 조건을 모두 충족시키며 최대점수를 출력하는 프로그램을 작성하시오. *입력 설명 첫 번째줄에 문제의 개수 N(1 ≤ N ≤ 100)과 제한 시간 M(10 ≤ M ≤ 1000)이 주어진..
2022.02.06
-
Algorithm - 가장 높은 탑 쌓기(LIS 응용)
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [가장 높은 탑 쌓기(LIS 응용)] 밑면이 정사각형인 직육면체 벽돌을 사용하여 탑을 쌓고자 한다. 탑은 벽돌을 한 개씩 아래에서 위로 쌓으면서 만들어 간다. 아래의 조건을 만족하면서 가장 높은 탑을 쌓을 수 있는 프로그램을 작성하시오. (조건 1) 벽돌은 회전시킬 수 없다. 즉, 옆면을 밑면으로 사용할 수 없다. (조건 2) 밑면의 넓이가 같은 벽돌은 없으며, 무게가 같은 벽돌도 없다. (조건 3) 벽돌들의 높이는 같을 수 있다. (조건 4) 탑을 쌓을 때, 밑면이 좁은 벽돌 위에 밑면이 넓은 벽돌을 놓을 수 없다. (조건 5) 무게가 무거운 벽돌을 무게가 가벼..
2022.02.03
-
Algorithm - 최대 선 연결하기(LIS 응용)
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [최대 선 연결하기(LIS 응용)] 왼쪽의 번호와 오른쪽의 번호가 있는 그림에서 같은 번호끼리 선으로 연결하려고 한다. 왼쪽 번호는 무조건 위에서부터 차례로 1부터 N까지 오름차순으로 나열되어 있다. 오른쪽의 번호 정보가 위에서부터 아래로 주어질 때, 선이 서로 겹치지 않고 최대 몇 개의 선을 연결할 수 있을지 구하는 프로그램을 작성하시오. 위의 그림은 오른쪽 번호 정보가 4, 1, 2, 3, 9, 7, 5, 6, 10, 8로 입력되어 있을 때, 선이 서로 겹치지 않고 연결할 수 있는 선의 최대 값(6개)을 구한 경우이다. *입력 설명 첫 번째 줄에는 자연수 N(..
2022.02.03
-
Algorithm - 네트워크선 자르기(동적 계획법)
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [네트워크선 자르기(동적 계획법)] 현수는 네트워크선을 1m, 2m의 길이를 갖는 선으로 자르려고 한다. 예를 들어, 4m의 네트워크 선이 주어진다면 아래와 같이 5가지의 방법을 생각할 수 있다. 2)와 3)과 4)의 경우는 왼쪽을 기준으로 자르는 위치가 다르기 때문에 다른 경우의 수로 고려한다. 네트워크선의 길이가 N일 때, 1m 혹은 2m의 길이로 네트워크선을 자르는 방법을 구하는 프로그램을 작성하시오. *입력 설명 첫 번째 줄에 네트워크 선의 총 길이인 자연수 N(3 ≤ N ≤ 45)이 주어진다. *출력 설명 첫 번째 줄에 길이가 N인 네트워크선을 자르는 경..
2022.01.31
-
Algorithm - 최대점수 구하기(DFS)
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [최대점수 구하기(DFS)] 현수는 선생님이 주신 N개의 문제를 풀려고 한다. 각 문제는 그것을 풀었을 때 얻는 점수와 푸는데 걸리는 시간이 주어져있다. 제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 하는 프로그램을 작성하시오. (단, 해당문제는 해당시간이 걸리면 풀리는 것으로 간주하며 한 유형당 한 개의 문제만 풀 수 있음) *입력 설명 첫 번째 줄에 문제의 개수 N(1 ≤ N ≤ 20)과 제한시간 M(10 ≤ M ≤ 300)이 주어진다. 두 번째 줄부터 N줄에 걸쳐 문제를 풀었을 때의 점수와 푸는데 걸리는 시간이 주어진다. *출력 설명 첫 번째 줄..
2022.01.02
-
Docker - reverse proxy와 nginx 웹서버의 주요 설정
도커 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. reverse proxy & nginx nginx 웹 서버의 reverse proxy 테스트를 통해 proxy server의 개념을 학습하고자 한다. proxy server 란? proxy server는 클라이언트(client)가 다른 네트워크 서비스(server)에 간접적으로 접속할 수 있도록 해주는 시스템 또는 프로그램이다. *참고내용 - forward proxy client가 proxy server에 외부 인터넷 접근을 요청하면, proxy server는 client를 대신하여 외부의 인터넷에 접속한 후 결과를 받아서 이를 client에 다시 전달한다. (client..
2021.12.25
-
Docker - 컨테이너와 컨테이너를 연결하기
도커 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 컨테이너와 컨테이너를 연결하기 docker run 명령의 --link 옵션을 사용하여 컨테이너와 컨테이너를 연결하는 연습을 하고자 한다. docker container & docker container *dokcer run 명령의 --link 옵션 기본구조 --link : [1단계] mysql이 실행되는 docker container를 생성하고 실행시키는 명령이다. 여기서 mysql이 실행되는 폴더인 /var/lib/mysql를 /home/ubuntu 안에 존재하는 mysqldata에 연결시켜 놓는다. [2단계] "docker inspect 이미지명" 명령을 통해 mysq..
2021.12.19
-
Docker - 도커로 주피터 노트북 서버 만들기
도커 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 도커(docker)로 주피터 노트북 서버 만들기 docker를 통해 주피터 노트북 서버를 만드는 연습을 하고자 한다. docker & jupyter notebook docker container 내부에서 jupyter notebook이 실행되는 폴더인 /home/jovyan 폴더를 호스트 PC의 폴더와 연결하여 호스트 PC에서 docker를 실행하는 폴더에 있는 주피터 노트북 파일을 작업할 수 있다. (docker 활용) [1단계] ubuntu에 주피터 노트북이 실행되는 폴더와 연결할 2021_LEARN 폴더가 있는지 확인한다. [2단계] docker container를 ..
2021.12.19
-
Algorithm - 이진트리 순회(DFS : Depth First Search)
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [이진트리 순회(DFS)] 아래와 그림을 참조하여, 이진트리의 전위순회·중위순회·후위순회를 출력하는 프로그램을 작성하시오. *입력 설명 첫 번째 줄에 이진트리의 루트노드 값이 주어진다. *출력 설명 첫 번째 줄에 전위순회·중위순회·후위순회의 결과 값을 출력한다. 풀이(Python) 답안(전위순회) import sys sys.stdin = open('AA/input_44.txt', 'rt') def DFS(v): if v > 7: return else: print(v, end=' ') DFS(v*2) DFS(v*2+1) if __name__ =="__main__":..
2021.12.16
-
Flask - flask 이해를 위한 파이썬 객체 지향
Flask 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. Class & Object(클래스와 객체) 기본 개념(Class & Object) 아래의 예시코드를 통해 클래스(Class)와 객체(Object)의 개념을 공부하고자 한다. class Figure: count = 0 # 클래스 속성 # 생성자(initializer) def __init__(self, width, height): # self.* : 인스턴스 속성 self.width = width self.height = height # 클래스 속성의 접근 예시 Figure.count += 1 def __del__(self): Figure.count -= 1 # 메서드(..
2021.12.01
-
Flask - flask로 정적 웹 페이지 지원
Flask 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. flask로 정적 웹 페이지 로드하기(Python) flask로 프론트엔트 페이지를 로드하는 연습을 하고자 한다. 정적 웹 페이지 로드(with flask) *HTML 파일 Enter Name: *파이썬 파일 from flask import Flask, jsonify, request, render_template app = Flask(__name__) @app.route('/login') def login(): username = request.args.get('user_name') passwd = request.args.get('pw') email = request..
2021.11.25
-
Flask - 다양한 routing 기법
Flask 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 다양한 routing 기법(Python) flask의 다양한 routing 기법을 예제를 통해 연습해보고자 한다. routing 기법으로 정적 페이지 리턴하기(HTML) from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" @app.route("/hello") def hello_flask(): return "Hello Flash!" @app.route("/first") def hello_first(): return "Hello First" if __..
2021.11.24
-
Flask - flask의 이해를 돕는 파이썬 문법 정리
Flask 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. flask의 이해를 돕는 파이썬 문법(Python) flask를 다루기 위해 필요한 Python 중급 문법을 연습하고자 한다. __name__ 문법 print('test.py __name__:', __name__) ``` 결과 : test.py __name__: __main__ ``` import test print('test2.py __name__:', __name__) ``` 결과 : test.py __name__: test test2.py __name__: __main__ ``` __name__ 변수를 사용하면, 파이썬에서는 자동으로 해당 모듈의 이름이 들어간다..
2021.11.21
-
MySQL - 데이터 분석과 SQL 문법
데이터베이스 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 데이터 분석과 SQL 문법(MySQL) MySQL 구문으로 데이터를 분석하는 연습을 하고자 한다. GROUP BY, COUNT, SUM, AVG, MAX, MIN, DISTINCT, AS, HAVING COUNT() COUNT() 함수는 테이터 검색 결과에서 row가 몇 개인지를 알려준다. 기본 문법 - SELECT COUNT(*) FROM 테이블명 - SELECT COUNT(컬럼명) FROM 테이블명 SELECT COUNT(*) FROM items; SELECT COUNT(ori_price) FROM items; SELECT COUNT(*) FROM items 코..
2021.11.12
-
MySQL - 실전 크롤링과 데이터베이스
데이터베이스 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 실전 크롤링과 데이터베이스(MySQL) 실전 크롤링으로 추출한 데이터를 데이터베이스 스키마(Schema)에 저장하는 연습을 하고자 한다. 스키마(Schema) 설계 CREATE DATABASE bestproducts DEFAULT CHARSET=utf8 COLLATE=utf8_bin; USE bestproducts ``` 결과 : ``` 우선, Workbench로 bestproducts 라는 데이터베이스를 만들고 해당 데이터베이스를 사용할 준비를 한다. 참고로, DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 코드는 한글 처리에 문제가 있을 경..
2021.11.11
-
MySQL - pandas & pymysql 라이브러리
데이터베이스 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. pandas, pymysql 라이브러리 pandas 라이브러리의 많은 기능 중 일부를 연습해보고자 한다. read_sql() pandas 라이브러리의 다양한 기능 중, read_sql() 함수를 사용하면 SQL 코드의 결과를 바로 확인할 수 있다. import pymysql import pandas as pd host_name = 'localhost' host_port = 3306 username = 'root' password = 'mysql pw' database_name = 'student_mgmt' db = pymysql.connect( host=host_n..
2021.11.10