알고리즘

SQL 문법 정리 6 :테이블 생성 및 데이터 조작 (CREATE, INSERT, UPDATE, DELETE)📌 테이블 생성 규칙이름 규칙영문자로 시작 (예: UDEPT, STUDENT)최대 64자까지 허용허용 문자: A-Z, a-z, 0-9, _, $예약어 사용 금지 (예: SELECT, FROM)📊 데이터 타입 종류데이터 타입설명크기/범위CHAR(n)고정 길이 문자열 (공백으로 채움)0 ~ 255 바이트VARCHAR(n)가변 길이 문자열 (공백 없음)0 ~ 65,535 바이트SMALLINT작은 정수 (-32,768 ~ 32,767)2바이트INT일반 정수 (-2,147,483,648 ~ 2,147,483,647)4바이트DECIMAL(m,d)고정 소수점 (정확한 계산에 적합, 예: 화폐)m: 전체 자..
SQL 조인(Join) 정리1. 조인(Join) 개요목적: 하나 이상의 테이블을 연결하여 데이터를 조회핵심 키: 기본 키(PK)와 외래 키(FK)를 사용해 테이블 연결주요 조인 유형:Inner JoinOuter JoinCross JoinSelf JoinNon-Equijoin2. Inner Join (내부 조인)기본 개념두 테이블의 공통된 데이터만 반환INNER JOIN 키워드 또는 WHERE 절로 구현문법-- ANSI 표준SELECT 컬럼목록FROM 테이블1INNER JOIN 테이블2 ON 조인조건[WHERE 추가조건];-- 암시적 조인 (WHERE 사용)SELECT 컬럼목록FROM 테이블1, 테이블2WHERE 조인조건 [AND 추가조건];예시-- 부서(DEPT)와 사원(EMP) 테이블 조인SELECT ..
SQL 문법 정리 4 :집계 함수 & 서브쿼리1. 집합 연산자 (Set Operators)연산자설명특징UNION중복 제거 후 결과 합침정렬된 결과 출력UNION ALL모든 결과 포함 (중복 허용)정렬되지 않음, 더 빠름⚠️ 주의사항컬럼 개수와 데이터 타입이 동일해야 함-- 부서번호 중복 제거 (EMP + DEPT 테이블)SELECT DEPTNO FROM EMPUNIONSELECT DEPTNO FROM DEPT;-- 모든 부서번호 출력 (중복 포함)SELECT DEPTNO FROM EMPUNION ALLSELECT DEPTNO FROM DEPT;2. 그룹 함수 (Group Functions)함수설명특징SUM(컬럼)합계 계산숫자형 컬럼만 가능AVG(컬럼)평균 계산NULL 값 무시MAX(컬럼)최대값 반환숫자/..
SQL 문법정리 3 : 문자, 숫자, 날짜 함수 활용법 📌 문자 함수 (Character Functions)1. 대소문자 변환LOWER() / LCASE(): 소문자로 변환 SELECT LOWER('SQL Course') → 'sql course'UPPER() / UCASE(): 대문자로 변환SELECT UPPER('SQL Course') → 'SQL COURSE'2. 문자열 결합 (CONCAT)SELECT CONCAT('My', 'SQL') → 'MySQL'-- 실무 예시: 직무와 이름 결합SELECT CONCAT(JOB, ' ', ENAME) FROM EMP WHERE DEPTNO=10;3. 부분 문자열 추출 (SUBSTR)SUBSTR(문자열, 시작위치, [길이])SELECT SUBSTR('SQL ..
SQL 문법 정리 2: 데이터 검색1. ORDER BY: 결과 정렬기능: 조회 결과를 특정 컬럼 기준으로 오름차순(ASC) 또는 내림차순(DESC) 정렬기본값: ASC (생략 가능)사용법:SELECT 컬럼1, 컬럼2 FROM 테이블명 ORDER BY 컬럼 [ASC|DESC];📌 주의 사항컬럼 대신 Alias/순서 번호 사용 가능SELECT ENAME, JOB AS WORK FROM EMP ORDER BY WORK DESC;SELECT ENAME, JOB FROM EMP ORDER BY 2; -- 두 번째 컬럼(JOB) 기준 정렬다중 컬럼 정렬SELECT ENAME, JOB FROM EMP ORDER BY ENAME ASC, JOB DESC;2. WHERE: 조건 필터링기능: 특정 조건을 만족하는 행만 ..
SQL 정리 1: SELECT, 함수, NULL 처리 📌 SELECT 문 기본 구조1. 모든 컬럼 조회SELECT * FROM 테이블명;예시:SELECT * FROM DEPT; -- DEPT 테이블 전체 조회2. 특정 컬럼 조회SELECT 컬럼1, 컬럼2 FROM 테이블명;예시:SELECT DEPTNO, DNAME FROM DEPT; -- 부서 번호와 이름만 조회📌 중복 제거 (DISTINCT)SELECT DISTINCT 컬럼1, 컬럼2 FROM 테이블명;예시:SELECT DISTINCT JOB, DEPTNO FROM EMP; -- 직무와 부서 번호 중복 제거📌 수학 연산자 활용연산자설명예시+덧셈SAL + 100-뺄셈SAL - 500*곱셈SAL * 1.1/나눗셈DEPTNO / 10()우선순위(..
#include using namespace std;// CCW 함수: 세 점의 방향성을 판단합니다.int ccw(int x1, int y1, int x2, int y2, int x3, int y3) { // 벡터 AB와 벡터 AC의 외적 계산 int crossProduct = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1); // 방향성 판단 if (crossProduct > 0) { return 1; // 반시계 방향 (Counter ClockWise) } else if (crossProduct > x1 >> y1 >> x2 >> y2 >> x3 >> y3; // CCW 결과 확인 int result = ccw(x1,..
중복 부분 문제 (Overlapping Subproblems):동적 프로그래밍 문제는 동일한 하위 문제를 여러 번 반복해서 푸는 특성이 있습니다. 예를 들어 피보나치 수열에서 F(n) = F(n-1) + F(n-2)와 같은 점화식을 사용할 때, F(n-1)과 F(n-2)를 반복적으로 계산하는 경우가 많습니다.DP에서는 이러한 중복 계산을 **메모이제이션 (Memoization)**이나 탑다운/바텀업 접근법으로 저장해 두고, 동일한 하위 문제가 다시 등장하면 저장된 값을 사용하여 계산을 줄입니다. 이를 통해 시간 복잡도를 줄여 효율성을 높입니다.최적 부분 구조 (Optimal Substructure):최적 부분 구조란 문제를 작은 하위 문제들로 나누어 해결할 수 있고, 각 하위 문제의 최적해를 결합하여 전..
#include #include #include using namespace std;const int INF = 1e9;bool bellmanFord(int start, int n, vector>& edges, vector& dist) { dist[start] = 0; // 모든 간선을 최대 (V-1)번 반복 for (int i = 0; i > n >> m; vector> edges; for (int i = 0; i > u >> v >> w; edges.push_back({u, v, w}); } int start; cin >> start; vector dist(n, INF); bool noNegativeCycle = bellmanFord(..
#include #include #include #include using namespace std;const int INF = 1e9; // 무한을 나타내기 위해 사용vector dijkstra(int start, int n, vector>>& graph) { vector dist(n, INF); // 최단 거리 테이블을 무한으로 초기화 priority_queue, vector>, greater> pq; dist[start] = 0; pq.push({0, start}); // 시작 노드로 가기 위한 비용은 0으로 설정 while (!pq.empty()) { int cost = pq.top().first; // 현재 노드까지의 비용 int u = ..
경우42
'알고리즘' 카테고리의 글 목록 (2 Page)