SQL 문법 1. 정의 SQL은 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 프로그래밍 언어이다. SQL(Structured Query Language) 문법은 데이터베이스를 접근하고 조작하는데 필요한 표준 언어를 활용할 수 있게 해주는 규칙이다. 분류로는 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)이 있다. ※ 사전 지식 - Relational(관계형): MySQL, MariaDB, PostgreSQL, SQLite - Non-Relational(비관계형): MongoDB, CouchDB, Redis - 관계형은 행과 열의 집합인 테이블 형식으로 데이터를 저장하고, 비관계형은 테이블 형식이 아닌 키-값 (Key-Value) 형태로 값을 저장 2. DDL ..
BFS 알고리즘 Q www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net A BFS를 이용하여 풀었다. 이코테 책에 있는 실전문제와 같아서 쉬웠다. 코드 from collections import deque def bfs(x, y): queue = deque(()) #큐 구현을 위해 deque 라이브러리 사용 queue.append([x, y]) while queue: #큐가 빌때까지 반복 x, y = queue.popleft() #큐에서 하나의 원소를 뽑아 출력 for i in range(4)..
구현 Q www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net A append 와 pop을 이용하여 풀었다. 코드 k = int(input()) array = list(int(input()) for _ in range(k)) result = [] for i in array: if i != 0: result.append(i) #가장 뒤에 입력 else: result.pop() #가장 뒤에 있는 원소 제거 print(sum(resul..
그리디 알고리즘 Q www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net A 경우의 수를 하나하나 생각하며 풀었다. 아마 시간제한이 있었다면 못풀었을 것이다. 주의해야 할 점은 4번 이동 전까지는 같은 방법을 여러번 써도 된다는 것이다. 코드 n, m = map(int, input().split()) count = 0 if n == 1: count = 1 elif n == 2: if m >= 7: #5번 이동부터는 같은 것 연속할 수 없어서 4로 제한 count = 4 elif m >= 5: count = 3 elif m >= ..
이진 탐색 알고리즘 Q www.acmicpc.net/problem/18238 18238번: ZOAC 2 2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해 www.acmicpc.net A 이진 탐색 알고리즘을 이용하여 풀었다. 원판이 왼쪽, 오른쪽 둘다 돌 수 있다는 것만 주의하면 된다. 코드 def binary(array, target, start, end): #이진 탐색 알고리즘 while start target: end = mid - 1 else: start = mid + 1 return None array = ['A','B','C','D','E'..
다이나믹 프로그래밍 알고리즘 Q www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net A 점화식을 세우는 것이 중요하다. n-1, n-2번째를 생각하였을때의 점화식으로 답이 안나오면 n = 1일때부터 차근차근 생각해보자. 코드 import sys n = int(sys.stdin.readline()) d = [0] * 1001 d[1] = 1 d[2] = 2 for i in range(3, 1001): d[i] = d[i-1] + d[i-2] print(d[n] % 10007)