Computer_Language 69

[DB][MySQL] pymysql을 사용하여 파이썬에서 DB 다루기

이번 포스트는 MySQL을 파이썬으로 다루기 위해 기본적인 pymysql 모듈의 사용법에 대해 정리해보려고 한다. pymysql 모듈 설치 pymysql을 모듈을 설치하는 방법이다. 간단하게 파이썬 모듈을 설치하던 방식으로 설치하면 된다. import pymysql connect = pymysql.connect(host='localhost', port=3306, user='root', password='********', db='JOO_DATA', charset='utf8') cursor = connect.cursor() sql = "select * from CS" cursor.execute(sql) print(cursor.fetchall()) 필자는 윈도우에서 docker를 이용해 MySQL환경을 만들..

[백준] 1182번 부분수열의 합 파이썬 해설

출처 : https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 브루트 포스 알고리즘으로 분류된 문제이다. 완전 탐색 알고리즘이라고도 불리는데, 가능한 모든 경우의 수를 다 따진다는 뜻이다. 문제를 두 가지 방법으로 풀어봤다. 첫 번째는 파이썬 모듈을 사용하여 풀었고, 두 번째는 직접 조합을 만들어서 풀었다. 1. 파이썬 itertools를 사용한 풀이 from itertools import combinations ..

[Go] 9. Go(golang)의 함수(func)

오늘 정리할 내용은 함수에 관한 내용이다. 특정 기능들을 기능별로 묶어서 구현하기 위해서 함수를 사용한다. 코드의 야이 줄어들고, 가독성도 좋아지고, 재사용 하기도 편리하다. 함수를 자주 호출하면 그만큼 오버헤드가 생긴다는 단점 말고는 사용하지 않을 이유가 없는 것 같다. Go언어의 함수 기본 문법 package main import "fmt" func func_1() { fmt.Println("매개변수와 반환값이 없는 함수를 실행하였습니다.\n") } func main() { func_1() } 매개변수와 반환 값이 없는 가장 기본적인 함수의 형태이다. 다른 언어들과 마찬가지로 가장 기본 문법에 조금씩 추가하면 반환 값과 매개변수를 갖는 함수를 선언할 수 있다. 여러 가지 변형된 함수를 정리한 코드를 ..

[DB][MySQL] 데이터베이스의 DCL(Data Control Language)

이번 포스트는 MySQL을 사용하여 데이터베이스의 DCL을 정리해보려고 한다. DCL이란 데이터베이스를 제어하는 명령어로 사용자 정보를 추가, 수정, 삭제 등을 하거나 권한을 설정할 때 사용한다. 사용자 정보 변경 기본 문법 1. 유저 생성 mysql> CREATE USER 'userid'@localhost IDENTITFIED BY '비밀번호'; mysql> CREATE USER 'userid'@'%' IDENTITFIED BY '비밀번호'; 2. 유저 비밀번호 변경 mysql> SET PASSWORD FOR 'userid'@'%' = '비밀번호'; 3. 유저 삭제 mysql> DROP USER 'userid'@'%'; 로컬에서만 접속할 수 있는 "localman"이라는 유저를 생성했다. 비밀번호도 변..

[백준] 9465번 스티커 파이썬 해설

출처 : https://www.acmicpc.net/problem/9465 9465번: 스티커 문제 상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다. 상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다. 모든 스티커를 붙일 수 없게된 상냥이는 각 스티커에 점 www.acmicpc.net dp 알고리즘으로 분류된 문제이다. 점화식을 찾는데 다른 dp 문제보다 시간이 조금 더 걸렸지만, 어려움 없이 잘 풀었다. 풀이 ..

[DB][MySQL] 데이터베이스의 DML(Data Manipulation Language)

이번 포스트는 MySQL을 사용하여 데이터베이스의 DML을 정리해보려고 한다. CRUD에 대해서 며칠 전에 읽은 기억이 난다. CRUD는 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 생성, 읽기, 갱신, 삭제를 묶어서 하는 말이라고 한다. CRUD에 해당하는 MySQL 문법은 다음과 같다. CRUD MySQL Create INSERT Read SELECT Update UPDATE Delete DELETE INSERT 명령 바로 명령문을 작성하기 전에 DDL을 연습할 겸 새로운 테이블을 정의해봤다. mysql> CREATE TABLE CS ( language VARCHAR(50) grade VARCHAR(10) preference VARCHAR(10) ); mysql> ALTER TABLE CS..

[C] C언어의 Stack_Frame

오늘은 스택 프레임에 대해 공부했다. 사실 이해하는데 정말 많은 시간이 걸렸는데 막상 공부하고 보니 그렇게 어려운 개념은 아닌 것 같다. 시작하기 전에.. 비주얼 스튜디오 2019를 통해 결과를 확인해보려 했는데, 디버그 옵션도 변경하고, 최적화 설정도 "사용 안 함"으로 바꿔줬는데 스택과 스택 사이에 예상하지 못한(?) 값이 계속 들어가서 아직도 실습을 못해보고 있다..ㅜ 제대로 된 설정을 찾게 되면 꼭 직접 테스트해보고 싶다. 아니면 우분투에서 GDB를 써서라도 꼭 확인해 볼 것이다. 스택 프레임 스택 프레임을 한 줄로 요약하자면, "함수 a가 호출되었을 때 그 함수가 가지는 공간(공간의 구조)"이다. 스택 영역을 함수가 어떻게 사용하는지 천천히 공부해보자. #include void func_a() ..

Computer_Language/C 2019.10.15

[백준] 1507번 궁금한 민호 C 해설 (플로이드 와샬 - reverse)

출처 : https://www.acmicpc.net/problem/1507 1507번: 궁금한 민호 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 각각의 도시 사이에 이동하는데 필요한 시간 (≤ 10,000)이 주어진다. A에서 B로 가는 시간과 B에서 A로 가는 시간은 같다. 또, A와 B가 같은 경우에는 필요한 시간은 0이다. www.acmicpc.net 그리디, 플로이드 와샬 알고리즘으로 분류된 문제이다. 플로이드 와샬 알고리즘으로 분류되어 있길래 당황했지만 신기한 접근으로 풀어나가는 문제여서 천천히 풀어보았다. 당황했던 이유는 이미 모든 노드로 가는 최단경로를 입력으로 주어졌기 때문이었다. 하지만 이 문제는 플로이드 와샬 알고리즘을 역으로 이용하는 문제였다...

[백준] 9461번 파도반 수열 C 해설 (다이나믹 프로그래밍)

출처 : https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하 www.acmicpc.net 다이나믹 프로그래밍(DP) 알고리즘으로 분류되어있는 문제이다. 이제 DP알고리즘은 정말 잘 푸는 것 같다. 물론 아직 갈 길..

[Go] 8. Go(golang)의 맵(map)

오늘 정리할 내용은 맵(map)에 대한 내용이다. 맵은 슬라이스와 마찬가지로 참조 타입이다. 문법도 슬라이스와 유사하여 쉽게 공부할 수 있었다. Go언어의 맵 기본 문법 Go언어의 맵은 Python언어의 딕셔너리와 매우 유사하다. nil map이라는 개념이 있다는 것이 유일한 차이점인 것 같다. 코드를 통해 nil map을 선언해보고, 선언과 동시에 초기화도 해보자. package main import "fmt" func main() { var dict1 map[string]string if dict1 == nil { fmt.Println("this is nil map") } dict2 := map[string]string{ "name": "주성민", "age": "25", "birth": "950906..