전체 글

개발 등 공부기록용 블로그입니다
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()우선순위(..
· [백준]/C++
https://www.acmicpc.net/problem/21738  #문제 간단 정리 bfs 문제 #문제 해결 방법 우선 문제를 잘 이해해 보면펭귄이 이어진 지지대가 2개 는 있어야 된다 -> 즉 펭귄과 지지대를 잇는 경로만 멀쩡히 있으면 된다-> 즉 가장 가까운 지지대 2개를 골라서 그 지지대 경로를 제외한 모든 얼음을 깨면 된다-> 가장 가까운 지지대 2개를 bfs 를 이용해서 찾는다 라는 발상이 가능하다중요한건 dfs 를 처음에 사용하려 했는데 가장 가까운 지지대 경로 를 찾아야해서 부적합 하기 때문에 bfs 를 사용했고 ,( 재귀형식으로 만드는ㄴ게 불가능하진 않겠지만 귀찮을 것이다) 그리고 결국 가장 가까운 거리의 2개의 지지대 경로만 찾으면 되기 때문에2개를 찾자마자 바로 결과를 출력했다.딱히..
· [백준]/C++
https://www.acmicpc.net/problem/2563#include #include #include using namespace std;int a, b;int n;vector> paper;void fill() { for (int i = 0; i > n; paper.resize(260, vector(260)); while (n--) { cin >> a >> b; fill(); } int ans = 0; for (int i = 0; i
· [백준]/C++
https://www.acmicpc.net/problem/15925  #문제 간단 정리구현 + 브루트 포스 문제 #문제 해결 방법우선 브루트포스로 문제를 풀리게하도록 고심한 흔적이 여럿 보이는데  문제의 n 이 31 까지로 상당히 작고 보드가 홀수로만 주어진다는 점이 주목할만한 점인데 만약 행이나 열을 1 이나 0으로 바꾸게 되면 항상 1이나 0이 늘어나기 때문에 다음에 더 유리한 조건이 된다 때문에 행과 열을 반복해서 교차로 키거나 끌 수 있는지 확인해주면 (N^2) 한번 키거나 끌 때 N개의 컴퓨터가 바뀌니까  이 작업이 최대 N 번복 N^2 * N 해서 대략 N^3 정도인 듯 하다 나머지는 개인의 구현 역량에 따라 구현하면 된다. #전체 코드#include #include #include using..
· [백준]/C++
https://www.acmicpc.net/problem/17088  #문제 간단 정리수학 + 브루트 포스 문 #문제 해결 방법 등차수열이기 때문에 결국에는 첫항과 마지막항에 +1 0 -1 을 하면 공차가 각각 정해지는데 이렇게 3*3 경우의 수로 공차가 정해지면 각 항에서 start + 공차 * 인덱스 를 한 값이 각 벡터에 올바르게 들어 갈 수 있는지 체크해주면 (+1 -1 을 해서 값을 만들 수 있는지 ) 확인해 주면 된다  #전체 코드#include #include #include using namespace std;int n;int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n; vector vec(n);..
· [백준]/C++
https://www.acmicpc.net/problem/30023  #문제 간단 정리 그리디 + 문자열 + 구현 정도로 볼 수 있는 문제  #문제 해결 방법 일단 모든 색을 같게 맞추는데 있어서 우선 앞에서부터 하나씩 맞춰간다고 생각 할 수 있다.이런 경우에는 맨 앞의 색이 3가지색으로 고정되고그 앞에 색에 맞춰서 나머지 색깔을 맞춰주면 된다. 이 사고의 흐름은 모든 3가지 연속된걸 바꿔보는 건 너무 많기 때문에자연스럽게 하나씩 앞에서부터 맞춰본다는 생각이 드는게 맞는 것 같다  그렇게 마지막 -2 개 까지 맞춰놓고 마지막 2개도 같은색인지 확인해 주면 되는데 여기서 문자열 바꾸는걸 문자열 함수로 바꿔주게되면 문자열 바꾸는데 n의 시간복잡도가걸리기 때문에 배열로 처리해주는게 좋다그래서 처음엔 문자열 함..
· [백준]/C++
https://www.acmicpc.net/problem/14503  #문제 간단 정리 전형적인 구현 , 시뮬레이션 문제라고 할 수 있다. #문제 해결 방법 중요한건 우리가 뭘 구현해야될지 순서를 잘 생각하고 분할해야된다특히 특정 흐름을 생각하면서 함수로 분할하는게 매우 도움이 된다 이 문제 같은 경우에는 현재 칸이 아직 청소되지 않은 경우, 현재 칸을 청소한다.현재 칸의 주변 4칸 중 청소되지 않은 빈 칸이 없는 경우,바라보는 방향을 유지한 채로 한 칸 후진할 수 있다면 한 칸 후진하고 1번으로 돌아간다.바라보는 방향의 뒤쪽 칸이 벽이라 후진할 수 없다면 작동을 멈춘다.현재 칸의 주변 4칸 중 청소되지 않은 빈 칸이 있는 경우,반시계 방향으로 90도회전한다.바라보는 방향을 기준으로 앞쪽 칸이 청소되지 ..
경우42
경우없는 개발 블로그