투포인터투 포인터(two-pointer)란, 선형 자료구조(배열, 리스트 등)에서 위치(index)를 가리키는 변수(=포인터) 두 개를 사용하여 탐색 범위를 효율적으로 좁혀나가는 알고리즘 풀이 기법이다. 위와 같이 정렬되어있는 배열에서 두 수의 합이 6이 되는 쌍을 탐색하는 문제가 있다고 가정하자. 우리가 생각할 수 있는 가장 기본적인 아이디어는 이중 for문을 사용한 완전탐색(brute-force)으로, 이러한 경우 O(N^2) 의 시간복잡도 내에 문제를 해결할 수 있게 된다. 그러나 만약 배열의 길이가 너무 길다면 단순 완전탐색으로는 주어진 시간 내에 문제를 풀 수 없을 수도 있다. 따라서 시간을 조금 줄이기 위해, 조금 다른 방식으로 문제에 접근해보자. 숫자 쌍을 찾을 때, 한 숫자가 정해졌다면 특..
동적 배열동적 배열동적 배열(Dynamic Array) : 동적 할당(dynamic allocate)를 통해, 크기를 변경할 수 있도록 한 배열의 일종일반적인 자료구조에서 리스트(list) 라고 하면 대부분 동적 배열을 의미index를 이용한 데이터 접근이나 탐색과 같은 배열의 형태와 장점을 그대로 유지내부적으로 배열로 구현되므로 캐시 메모리 적중률 이 높음◆ 동적 할당(dynamic allocate)컴파일 단계에서 크기를 미리 정해주는 배열과는 달리, 런타임 단계에서 크기에 따라 메모리를 가변적으로 배치하는 것을 의미한다. Java는 모든 객체의 메모리값을 JVM이 동적 할당해준다.동적 배열과 복잡도시간복잡도접근 / 변경 : O(1)인덱스를 이용해 해당 데이터에 바로 접근하고 변경할 수 있음삽입 / 삭..
배열배열 배열(Array) : 데이터(원소; element)를 메모리 상에 연속하게 배치하여 논리적 / 물리적 구조가 일치하는 선형 자료구조동일한 자료형의 원소들만 저장 가능인덱스(index ; 순서값) 를 통해 O(1)라는 빠른 시간 내에 idx 번째 원소에 접근 / 변경할 수 있음연속한 메모리 주소를 필요로 하므로, 원소의 자료형과 크기가 정해지면 변경할 수 없음캐시 메모리 적중률 이 높아 최적화 성능이 우수함 ◆ 캐시 메모리 적중률(cache hit rate)컴퓨터는 자주 이용할 것 같은 자료를 캐시 메모리(Cache memory) 라는 공간에 따로 저장하여 성능을 향상시키는데, 적중률 이란 캐시 메모리에 저장되어 있을 확률을 의미한다. 적중률이 높기 위한 3가지 조건을 지역성(locality)의..
자료구조자료구조자료구조(data structure) : 효율적인 관리를 위해 특성이나 상호 관계 등에 따라 구조화시킨 데이터, 혹은 그의 집합체대부분의 프로그래밍 언어는 자료형(data type) 을 통해 자료구조를 정의원시 자료형자료를 특성에 따라 효율적으로 메모리에 저장하기 위해 분류한 기준프로그래밍 언어 차원에서 지원되는 기본적이고 독립적인 자료구조 추상 자료형(ADT : Abstract Data Type)다수의 원시 자료형들을 효율적으로 관리하기 위해 정의된 자료구조구성하는 원시 자료형과 필요한 연산 등을 수학적/논리적으로 정의해놓은 집합체※ 자료구조가 논리적으로 정의 및 설계된 용어라면, 자료형은 각 프로그래밍 언어에서 정의된 실제적 형식이다. 예를 들어 Java 는 인터페이스(혹은 추상클래스)..
8절 절차형 SQL절차형 SQL일반적인 개발언어처럼 절차지향적인 프로그램을 작성할 수 있도록 제공하는 기능SQL문의 연속적인 실행 및 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈 생성 가능 PL/SQL (Oracle)블록 구조: 블록 내에 1) DML 2) 쿼리 3) IF나 LOOP 등을 사용할 수 있음Declare(선언부): 블록에서 사용할 변수나 인수에 대한 정의Begin(실행부): 처리할 SQL문 정의Exception(예외 처리부): 블록에서 발생한 에러 처리 로직 정의, 유일한 선택 항목T-SQL (SQL Server)프로시저(Procedure) 사용자 정의 함수: 절차형 SQL을 로직과 함께 DB 내에 저장해 놓은 명령문 집합, RETURN을 통해 반드시 하나의 값 반환 (↔..
7절 데이터 제어어(DCL; Data Control Language) DCL데이터베이스에 접근하고 객체를 사용하도록 권한을 주고 회수하는 명령어👉 DB의 보안을 위해 필요함GRANT | REVOKE 권한 ON 오브젝트 유저명;-- GRANT SELECT, UPDATE ON Employee TO user1;GRANT: 권한 부여REVOKE: 권한 제거 권한(Privileges)SELECT, INSERT, UPDATE, DELETE, ALTER, ALL : DML 관련 권한REFERENCES : 지정된 테이블을 참조하는 제약조건을 생성하는 권한INDEX : 지정된 테이블에서 인덱스를 생성하는 권한Oracle의 유저SCOTT: 테스트용 샘플 유저SYS: DBA 권한이 부여된 최상위 유저SYSTEM: DB의..
6절 윈도우 함수윈도우 함수(Window Function)SELECT 윈도우함수(컬럼) OVER (PARTITION BY 컬럼 ORDER BY 컬럼 윈도잉절)FROM 테이블명;여러 행 간의 관계 정의 함수SQL의 행간 비교, 순위 매기기, 누적 계산 등을 수행GROUP BY와는 다르게, 개별 행을 유지하면서 그룹 내 집계를 계산서브쿼리보다 가독성이 좋고 성능도 우수윈도우 함수는 OVER() 구문과 함께 사용하며, 중첩 불가능PARTITION BY : 그룹핑 기준ORDER BY : 순위 지정 기준윈도잉절 : 함수의 대상이 되는 행 범위 지정윈도우함수의 범위 지정(윈도잉절)BETWEEN A AND B : 구간 지정N PRECEDING, N FOLLOWING : N번째 앞 행, N번째 뒤 행까지 포함UNBOU..
5절 그룹 함수ANSI/ISO 표준 데이터 분석 함수집계 함수, 그룹 함수, 윈도우 함수 그룹 함수(Group Function)데이터를 그룹별로 집계(합계, 평균) 하여 분석하는 함수NULL을 빼고 집계함결과값 없는 행은 출력 안함GROUP BY와 함께 사용 ROLLUP SELECT department, job_title, SUM(salary) AS total_salaryFROM EmployeeGROUP BY ROLLUP(department, job_title);GROUP BY로 묶인 칼럼의 소계 계산, 계층 구조로 GROUP BY의 칼럼 순서가 바뀌면 결과 값 바뀜소계와 총합계가 모두 나옴 (NULL 값은 소계)CUBESELECT department, job_title, SUM(salary) AS to..
- Total
- Today
- Yesterday
- oracle
- 자료구조
- db의 역사
- 필드
- BufferedReader
- db오브젝트
- Scanner
- Java
- StringBuilder
- 테이블
- DBMS
- 입출력
- dialect
- 데이터베이스
- APS
- 레코드
- SQL이란
- SQL
- DB
- 알고리즘
- 배열
- BufferedWriter
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |