전체 글 116

[DataBase/MySQL] MySQL 문법 정리

0. SQL 기본 구조와 실행 순서SQL 쿼리의 기본 구조는 다음과 같이 이루어진다.SELECT 컬럼/표현식FROM 테이블명 AS tWHERE 조건GROUP BY 그룹핑 기준HAVING 그룹핑 이후 조건ORDER BY 정렬 기준LIMIT 개수 [OFFSET 시작위치]SQL 실행 순서코드는 위에서 아래로 보이지만 실제로는 아래 순서로 실행된다.FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT이 실행 순서를 이해하면 WHERE/HAVING 차이, 그룹 연산, 정렬 오류 등을 쉽게 해결할 수 있다. 1. SELECT / FROM / WHERE1-1. 컬럼 선택 및 별칭(AS)SELECT e.emp_no AS 직원번호, e...

DB 2025.12.04

[DeepLearning/ComputerVision] Deep Learning 기반 행동 인식 알고리즘

Deep Learning 기반 행동 인식 알고리즘– CNN, LSTM, 3D CNN, ST-GCN, Transformer 행동 인식(Human Action Recognition, HAR)은 영상 속 사람의 움직임을 보고 “걷는다 / 뛴다 / 앉는다” 같은 라벨을 붙이는 문제로 CCTV에서 이상 행동을 감지하거나, 스포츠에서 선수 동작을 분석하거나, VR 게임에서 유저 행동을 실시간으로 분석하는 등 다양한 분야에서 사용된다. 행동 인식 모델은 입력 데이터(ex. 영상, skeleton, 센서)와 요구사항(실시간, 정확도, 장비)에 따라 선택해야 할 알고리즘이 완전히 달라지고 크게 네개로 정리해봤다.CNN + LSTM/GRU (2D CNN + RNN)3D CNN (C3D, I3D, SlowFast 등)Ske..

AI 2025.11.30

[algorithm] Bellman-Ford 알고리즘

벨만-포드 알고리즘 (Bellman-Ford Algorithm) 1. 벨만-포드 알고리즘이란? 벨만-포드 알고리즘(Bellman-Ford Algorithm) 은 하나의 시작 정점(source) 으로부터 모든 정점까지의 최단 거리를 구하는 알고리즘이다.다익스트라 알고리즘과 비슷한 목적을 가지지만, 다익스트라에서는 불가능한 음수 가중치(negative weight) 를 허용한다.따라서, 음의 간선(negative edge) 이 존재하는 그래프에서 최단 경로를 구할 때 매우 유용하다. 2. 알고리즘의 핵심 아이디어 벨만-포드는 모든 간선을 반복적으로 완화(Relaxation) 하는 알고리즘이다.Relaxation (완화):어떤 경로를 통해 더 짧은 거리로 도달할 수 있다면, 그 거리 값을 갱신하는 과정 즉,..

algorithm 2025.10.28

[프로그래머스/Lv3] 합승 택시 요금 - Python

https://school.programmers.co.kr/learn/courses/30/lessons/72413 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 조건1. A의 이동경로 : s -> b, B의 이동경로 : s -> b2. 두 사람의 경유지가 같을 경우 같은 택시를 타며, 요금은 한 번만 지불3. 두 사람의 총 택시 요금의 최소값 출력 접근 방식일단 A와 B의 공통 경유지를 생각하자마자 플로이드 워셜로 풀어야겠다고 생각했다. 플로이드 워셜 코드 구현1. 그래프 초기화dist = [[float('inf')] * (n + 1) for _ in range(n + 1)]for i in range(1,..

algorithm/Dijkstra 2025.10.12

[Database/DBMS] 트랜잭션과 ACID

트랜잭션이란?데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업시 처리되는 작업의 논리적 단위로 사용된다. 사용자가 시스템에 대한 요구시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로 사용된다. 쉽게 말해, 여러 개의 SQL 연산을 하나의 묶음으로 처리하는 것이다.예를 들어 은행에서 계좌 이체를 한다면,A 계좌에서 돈을 빼고B 계좌로 돈을 넣는이 두 작업이 모두 성공해야 이체가 완료되고, 이 중 하나라도 실패하면 전체가 취소되어야한다.이 전체 과정을 트랜잭션이라고 부르고, 데이터베이스가 신뢰할 수 있는 상태를 유지하도록 돕는다. 트랜잭션 모델은 데이터베이스의 종류에 따라 크게 두 가지로 나뉜다.ACID: 관계형 DBMS에서 사용하는 ..

DB 2025.10.11

[Database] 데이터베이스 기본 개념

데이터베이스란?데이터베이스는 데이터를 체계적으로 관리하고 저장하는 구조화된 공간이다.과거에는 데이터를 파일로 직접 관리했지만, 데이터가 많아질수록 검색, 수정, 중복 관리가 어려워졌고, 데이터를 효율적으로 다루기 위해 데이터베이스 시스템이 등장했다. DBMS (Database Management System)데이터를 한 곳에 모아 관리하고, 여러 사용자가 접근하여 데이터를 저장/수정/조회할 수 있도록 하는 응용 소프트웨어데이터 복구/보안/동시 접근 제어 등의 기능을 제공한다. DBMS 장점데이터 중복 최소화데이터 공유 (일관성 유지)정합성, 무결성, 보안성 유지사용자 중심의 데이터 처리데이터 표준화 적용 가능데이터 접근 용이데이터 저장 공간 공유로 인한 절약 DBMS 기능정의 데이터에 대한 형..

DB 2025.10.10

0. AI 개발 기초 개념

작년에 AI에 대해서 아주 얕게 접해봤는데, 직접 AI 개발에 참여하게 되면서 용어도 어렵고, 구조도 어렵고, 그동안 해왔던 개발이랑 너무 달라서 이것저것 찾아보면서 정리해봤다. 🤖 AI 개발 기초 개념 1. NVIDIA NVIDIA란?그래픽카드(GPU)를 만드는 반도체 회사원래는 게임용 GPU로 유명했지만, 지금은 AI 시대의 핵심 기업이 되었다.AI, 자율주행, 로봇, 데이터센터에 들어가는 GPU 대부분이 NVIDIA 제품 AI 개발에 중요한 이유딥러닝에서 필요한 대규모 병렬 행렬 연산을 GPU로 처리하는데, 대부분의 딥러닝 프레임워크 (PyTorch, TensorFlow)는 NVIDIA GPU 전용으로 최적화되어있다. 2. CUDA 와 cuDNN CUDA (Compute Unfified Devic..

AI 2025.08.10

[Express.js] 0. Express.js 개요

🫢 0. Express.js 개요 Express.js로 생성된 백엔드 코드를 리팩토링하게 되어서 공부하고 적용해보았다!1. Express.js란?Node.js 런타임 위에서 작동하는 웹 애플리케이션 프레임워크Node.js의 기본 HTTP 모듈은 강력하지만 복잡하고 반복적인 코드가 많아 실제 서비스에서는 다소 비효율적인데, 이를 보완해준다.Express는 미들웨어 기반 아키텍처를 통해 요처오가 응답 흐름을 유연하게 제어할 수 있고, 간단한 라우팅부터 복잡한 REST API 서버 구축까지 폭넓은 개발이 가능하다 2. Express 주요 특징경량화 : 최소한의 기능만 제공하여 가볍고 빠르다미들웨어 중심 설계 : 요청/응답을 가공하거나 필터링하는 로직을 체이닝 방식으로 구성할 수 있다RESTful API 구..

Backend/Node.js 2025.07.23

REST API 기본 개념

👩‍💻 REST API의 기본 개념요즘 웹 개발에선 프론트엔드와 백엔드를 나눠서 개발하는 경우가 많고, 그 과정에서 REST API가 많이 쓰이는 것 같다.백엔드 코드를 보고 수정할 일이 있었는데, 평소 REST API를 이용해 프론트엔드 작업을 해오면서도 정확히 모르는게 많은 거같아서 글로 정리해봤다.REST API의 기본 개념부터 구성 요소, 특징, 그리고 실제로 어떻게 RESTful하게 설계해야 하는지까지 구체적으로 정리했다 1. REST란?REST(Representational State Transfer)는 자원의 표현을 이용하여 상태를 주고받는 것을 의미한다.여기서 자원이란 소프트웨어가 관리하는 모든 것을 의미하고, 자원의 표현은 자원을 나타내기 위한 이름을 뜻한다.가령, 서버가 관리하는 ..

Backend 2025.06.22

[백준1406/실버2] 에디터 - Python

https://www.acmicpc.net/problem/1406 문제 조건명령어와 커서 위치에 따라 문자열 편집L : 커서 왼쪽으로 한 칸 옮기기D : 커서 오른쪽으로 한 칸 옮기기B : 커서 왼쪽에 있는 문자 삭제P $ : 커서 왼쪽에 문자 $ 추가모든 명령어는 불가능할 경우 무시 접근 방식시간 제한이 0.3초라 무조건 시간초과가 날 거 같았지만 일단 쌩으로 구현해보고 생각해보기로했다.pop과 insert를 사용해서 먼저 구현하고, 그 후에 rotate를 사용해서 구현했다.결론은 둘 다 시간초과가 나고, 도저히 생각이 안나서 다른 블로그를 참고했다. 내가 처음에 실패한 코드는 커서를 인덱스 번호로 생각하고 실제로 해당 값을 추가하거나 삭제하는 방식으로 구현했다.블로그에서 참고한 코드는 커서를 기준으..