본문 바로가기

(18)
WITH문 임시테이블. 이름을 가진 서브쿼리를 정의하여 사용하기 위함 view는 create로 생성하여 drop하기 전까지 없어지지 않고 모든 테이블에서 사용 가능하지만 with절의 경우 한번 실행한 쿼리문 내에 정의하여 해당 쿼리 안에서만 실행됨 쿼리의 가독성을 높이고 재사용할 수 있다는 장점 WITH [별명] AS ( subquery )
Java - 순열, 조합 public class Main { public static void main(String[] args) { int n = 10, r = 5; int[] ret = new int[r]; System.out.println(n + "C" + r); combi(ret, n, r, 0, 0); System.out.println("\n"+n + "P" + r); boolean[] visited = new boolean[n]; ret = new int[r]; perm(ret, visited, 0, n, r); } //nCr static void combi(int[] ret, int n, int r, int index, int target) { if (r == 0) { for (int i : ret) { System..
LIS 길이 구하기 LIS : Longest Increasing Subsequence, 최대 증가 부분수열 1. 완전탐색 int LIS(vector arr) { if (arr.empty()) return 0; int ret = 1; for (int i = 0; i < arr.size(); i++) { vector next; for (int j = i + 1; j < arr.size(); j++) { if (arr[i] < arr[j]) { next.push_back(arr[j]); } } ret = max(ret, 1 + LIS(next)); } return ret; } 시간복잡도 O(2^N) 2. DP int cache[MAX]; int find(int start, vector arr) { if (cache[start] ..
위상정렬 유향 그래프의 꼭짓점들(vectex)을 변의 방향을 거스르지 않도록 나열하는 것 ex) 순서가 있는 작업들을 수행할 때 순서 결정하기 1. DFS 스택에 들어가는 순서 : 7 -> 5 -> 2 -> 6 -> 3 -> 4 -> 1 위상정렬 순서 : 1 -> 4 -> 3 -> 6 -> 2 -> 5 -> 7 (여러 경우의 수 발생할 수 있다) 2. indegree 이용하기 (indegree : 한 정점에서 자신에게 들어오는 방향인 간선의 수) 1번 정점의 indegree 개수 = 0 2번 정점의 indegree 개수 = 1 3번 정점의 indegree 개수 = 2 4번 정점의 indegree 개수 = 3 5번 정점의 indegree 개수 = 0 indegree 개수가 0인 정점을 큐에 추가 큐의 front를 ..
MySQL - WHERE절 조회하는 데이터에 특정 조건을 부여할 목적으로 사용 보통 FROM 절 뒤에 온다 SELECT 칼럼명 FROM 테이블명 WHERE 조건식; 조건식은 칼럼명, 비교 연산자, 문자,숫자표현식, 비교칼럼명(JOIN) 등으로 구성 [연산자의 종류] 연산자의 우선순위 : 괄호() -> NOT -> 비교, SQL비교 -> AND -> OR * 와일드 카드 % : 0개 이상의 어떤 문자 _ : 1개인 단일 문자 ex : 이름에 '장'이 들어가는 선수 정보 조회하기 SELECT * FROM player WHERE player_name LIKE '%장%';
MySQL - CASE 문 프로그래밍 언어의 switch 문과 비슷 CASE WHEN 조건1 THEN '반환값1' WHEN 조건2 THEN '반환값2' ELSE '조건에 맞지 않는 경우 반환값' END WHEN과 THEN은 한쌍이어야 하고, 여러개가 있을 수 있다 OR나 AND를 이용해 조건을 지정할 수 있다 ELSE가 존재하지 않다면, 모든 조건에 맞지 않을 때 NULL을 반환 예제 : 프로그래머스 '중성화 여부 파악하기' 문제 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시 SELECT animal_id, name, CASE..
전송데이터 비트 오류 검증 Parity Check Parity Bit 데이터 전송 과정에서 오류가 생겼는지를 검사하기 위해 추가한 비트 오류 검출 부호에서 가장 간단한 형태로 사용되며 홀수 패리티, 짝수 패리티, 수직 패리티 체크방식, 수평 패리티 체크방식이 있다 오류 정정은 불가능 홀수 패리티는 전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 것이고 (주로 동기식 전송에 사용) 짝수 패리티는 짝수가 되도록 패리티 비트를 정하는 것 (주로 비동기식 전송에 사용) (홀수 패리티를 사용할 때 전체 비트의 1의 개수가 짝수라면 오류가 있는 것) 수직 패리티 체크방식은 수직 방향으로 패리티 비트를 부여, 수평 패리티 체크방식은 수평 방향으로 패리티 비트를 부여 CRC (Cyclic Redundancy Check) 네트워크 ..
트라이(Trie) why? 정수나 실수형 변수는 크기가 정해져 있으므로 비교에 상수 시간이 걸리지만, 문자열 변수를 비교하는 데는 문자열의 길이에 비례하는 시간이 걸린다 이러한 문제를 해결하기 위해 고안된 문자열 특화 자료구조의 대표적인 예가 트라이. 트라이 (Trie) 출처 : 위키피디아 class TrieNode { //자식 노드 맵 private Map childNodes = new HashMap(); //마지막 글자 여부 private boolean isLastChar; Map getChildNodes() { return this.childNodes; } boolean isLastChar() { return this.isLastChar; } void setLastChar(boolean isLastChar) { th..