본문 바로가기

분류 전체보기

(108)
[SQL/DML] SELECT 검색문의 SELECT 절 기초 쿼리 알아보기 SELECT 문일반 형식SELECT [ALL|DISTINCT] {COLUM_name [[AS] COLUM_alias],}+ | *}FORM TABLE_LIST[WHERE 투플_조건식][GROUP BY 컬럼명 [HAVING 그룹 조건식]][ORDER BY {컬럼명| 컬럼_별칭| 컬럼_위치 [ASC|DESC],}+][LIMIT [offset,] row_count];투플 조건식 : 컬러명, 비교연산자, SQL연산자, 숫자/문자/표현식 컬럼명[]은 생략 가능하다는 의미.+ : 1회 이상 반복이라는 의미  1) SELECT문의 실행순서SELECT문의 실행순서는 다음과 같다 FROM : 실행 대상 테이블을 참조한다. WHERE : 조건에 맞는 투플만 선택한다. GROUP BY : 기준 컬럼의 값에 따라, 투플들을..
[python]파이썬 나이트 투어 재귀 알고리즘 Knight's Tour Problem recursive Knight's Tour Problem 체스판에서 기사(Knight)말의 움직임은 아래와 같다. 임의의 위치에 놓여진 기사를 움직여서 모든 64개의 격자를 모두 방문하도록 기사말을 옮기는 방법을 계산하라. 단, 기사가 이미 방문한 격자는 다시 방문하지 않는다.  풀이 과정나이트가 움직일 수 있는 방향 저장 [1, -2], [2, -1], [2, 1], [1, 2], [-1, 2], [-2, 1], [-2, -1], -1, -2]초기 위치에서 나이트가 갈 수 있는 방향으로 전진. 체스판 안의 위치인지 확인.한번도 가지 않은 길이면 전진가능 mark배열에 갔던곳 표시 .한번 갔던 길이면 다시 후진 다른 경로 찾음.위의 과정을 반복하며 갈 수 있는 길로 전진, 갈 수 없으면 되돌아오기를 반복한다.  코드 구현..
[MySQL] CTE Common Table Expression 임시 테이블 CTECTE는 Common Table Expression의 약자로 단일 쿼리 내부에서 임시로 결과를 저장해 놓고, 해당 쿼리 내에서 반복적으로 사용가능한 임시 결과 집합 테이블이다. 임시로 쿼리 결과를 저장해 놓고 여러번 참조해서 사용하는 용도로 사용한다. 메인 쿼리내에서 정의되어 사용된다는 점이 서브 쿼리와 비슷하지만 재사용이 가능하다는 점이 서브쿼리와 차이가 있다. CTE의 비교대상으로는 VIEW가 있다. VIEW는 만들이 위해 권한이 필요하고 사전에 정의를 해야한다. 반면에 CTE는 권한이 필요없고 하나의 쿼리문이 끝날때까지만 지속되는 일회성 테이블이다.  CTE는 주로 복잡한 쿼리문에서 코드의 가독성과 재사용성을 위해 파생테이블 대신 사용하기에 유용하다.   기본 문법CTE의 기본문법이다. WIT..
[python] 파이썬 선택 정렬 알고리즘 (selection sort) Selection sort선택 정렬은 제자리 정렬(in-place) 알고리즘의 하나로, 알고리즘이 단순하며 사용할 수 있는 메모리가 제한적인 경우에 사용시 성능 상의 이점이 있다. 시간 복잡도는 O(N^2)이다.  알고리즘은 이렇다. 아직 정렬이 안된 배열에서 가장 작은 수를 찾는다.  min그 값을 정렬이 안 된 배열의 맨 앞으로 보낸다. 이 과정을 반복한다. def selectSort(arr, n): for i in range(0,n-1): min = i; j = i+1 while(j
[python]파이썬 삽입정렬 알고리즘 (insertion sort) Insertion Sort삽입 정렬은 자료배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열부분과 비교하여, 자신의 위치를 찾아 삽입하는 정렬 알고리즘이다. 삽입 정렬은 배열이 길어질수록 효율이 떨어지지만 구현이 간단하다는 장점이 있다. 시간 복잡도는 O(n^2)이다.  과정정렬이 안된 배열에서 제일 앞에 것을 선택 arr[i]정렬된 배열의 가장큰 원소부터 작은 원소 순으로 비교 arr[j]만약 arr[i]가 arr[j]보다 크다면  j+1위치에 arr[i] 삽입 만약 arr[j]가 arr[i]보다 크다면 arr[j+1]위치에 arr[j]를 옮겨서 한칸씩 뒤로 옮김  파이썬 코드로 구현하면 이와 같다. def insesrtionSort(arr, n): for i in range(1,n): ..
[python] 파이썬 슬라이싱 기본 개념 슬라이싱 문법슬라이싱은 list[start:end:step]의 형태를 가진다.start: 슬라이스의 시작 인덱스 (포함).end: 슬라이스의 끝 인덱스 (미포함).step: 슬라이스를 수행할 때의 단계(스텝). 기본값은 1이다.[ : :-1]의 의미빈 start와 end: start와 end를 생략하면 list의 처음부터 끝까지를 의미한다.step이 -1: step이 -1이면, list를 거꾸로 (역순으로) 탐색하라는 의미로 즉, 마지막 인덱스부터 첫 인덱스까지 역순으로 읽어온다.따라서  파이썬에서 list[::-1]는 다음과 같이 동작한다.list의 모든 인덱스를 포함(start와 end가 생략됨)하고,list를 거꾸로 읽어오는(step이 -1) 방식으로 list를 뒤집는다.original_list =..
[파이썬] Permutation 순열 나라야나 판디타 알고리즘 구현하기 Permutation(순열)순열은 어떤 집합의 원소들을 특정한 순서로 배열하는 것을 말한다. 서로 다른 원소로 만들어진 순열의 수는 n!이다. ex) a, b, c가 원소일 때 순열abcacbbacbcacabcba Compute All Permuntaionn개의 서로 다른 문자로 만들어진 스트링이 주어졌을 떄, 이 문자열에 속하는 문자들의 모든 순열로 만들어진 n!개의 문자열을 출력하는 알고리즘을 구현해 보자.파이썬으로 순열을 구하는 가장 기본적인 방식으로 백트래킹을 사용하는 방법이 있다. 이 방법은 문자열의 각 문자를 하나씩 고정하고, 나머지 문자를 재귀적으로 순열을 구하는 방식이다.   def permute(str_list, start, end): if start == end : print(""..
[SQL] JOIN 테이블 결합하기 기본 SQL에서는 JOIN을 사용해서 두 개의 테이블을 합칠 수 있다.   join을 하기 위해서는 두 테이블이 기본키(Primary key, PK)와 외래키(Foreign key, FK)관계여야 한다. 이것을 일대다 관계라고 한다.  JOIN의 종류JOIN에는 INNER JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN이 있다. INNCEWR JOIN(내부 조인) : 두 테이블을 JOIN 할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN(외부 조인): 두 테이블을 JOIN할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. CROSS JOIN(상호 조인): 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 JOIN하는 기능이다. SELF JOIN..