개발 22

[MySQL] 트랜잭션 (Transaction)

트랜잭션(Transaction)하나의 연속적인 업무 단위로, 데이터베이스에서 일련의 연산들이 모두 성공적으로 완료되어야만 실제로 반영되는 작업트랜잭션에 의한 관계는 필수적인 관계 형태를 가진다.여러 SQL 문을 하나로 묶을 때 사용한다.데이터베이스에 접속하는 동시에 트랜잭션 시작트랜잭션 제어 명령을 실행할 때 기존 트랜잭션이 끝남그리고 새로운 트랜잭션이 시작트랜잭션 명령어 (TCL)트랜잭션 명령어 (TCL, Transaction Control Language) : 트랜잭션의 실행 여부를 결정하는 명령어 1. 명령어 종류DML 명령에 대해서만 적용되어 2개 이상의 INSERT, UPDATE, DELETE 문을 실행할 때 트랜잭션 처리 필요 2. AUTO COMMIT 모드명령 실행 시 마다 COMMIT 자동..

Back-end/Database 2025.05.20

[Nossi] 응급차 최단 거리2

개발남노씨 강사님의 수업을 듣고 있어서 예제 문제로 노씨데브에 있는 문제도 가끔 공유해주신다.이번에는 암시적 그래프의 가장 기초적인 문제인 응급차 최단거리를 가져왔다. 코딩테스트 문제 응급차 최단 거리2 - Nossi.DevNossi.Dev는 개발자들을 위한 종합 플랫폼으로, 코딩테스트 연습과 커뮤니티를 통해 취업 및 이직 준비를 돕습니다. 최신 문제 풀이, 심도 있는 토론, 그리고 전문가 조언을 통해 여러분의 커리어cote.nossi.dev 문제 파악문제 설명한 도시에 큰 사고가 발생하여 응급차가 부상자를 구조하기 위해 출동해야 합니다. 도시는 m x n크기의 이진 행렬로 표현되며, 0은 차량이 통행 가능한 도로를, 1은 통행이 불가능한 구역을 나타냅니다. 응급차는 도시의 왼쪽 위(0, 0)에서 출발..

Algorithm 2025.05.20

[MySQL] 제약 조건 (Constraint)

제약 조건제약 조건(Constraint)이란 데이터의 무결성을 지키기 위한 제한된 조건을 의미한다.특정 데이터를 입력할 때 무조건적으로 입력되는 것이 아닌, 어떤한 조건을 만족했을 때 입력되도록 제약할 수 있다. 쉽게 말해, "이 컬럼에는 반드시 값이 있어야 해!" 또는 "이 값은 다른 테이블에 있는 값이어야 해!" 같은 규칙을 만들어두는 것제약 조건의 종류예시CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT CHECK (age >= 0), email VARCHAR(100) UNIQUE);student_id: 기본 키 (중복·NULL 불가)name: 반드시 값 있어야 함age: 0 이상이어야 ..

Back-end/Database 2025.05.19

[자료구조] 스택(Stack)

스택 (Stack)스택(Stack)은 데이터를 저장하는 선형 자료구조로, 후입선출(LIFO, Last In First Out) 방식을 따른다.후입선출(LIFO)가장 나중에 추가된 데이터가 가장 먼저 처리되는 구조스택 = 프링글스가장 나중에 넣은 과자를 가장 먼저 꺼내는 거랑 비슷함.Push : 데이터를 스택의 맨 위(top)에 추가Pop : 데이터를 스택의 맨 위(top)에서 제거하고 반환스택 사용 방법Stack 클래스Stack 클래스는 스택 자료구조를 구현한 클래스하지만 Deque 인터페이스와 ArrayDeque을 사용하는 방식에 비해 성능적으로 떨어져 잘 사용하지 않음.스택 대신에 Deque(덱)을 많이 이용Linked List 기반 Stack 구현LinkedList는 양방향 연결 리스트이므로 스택으..

Algorithm 2025.05.18

[프로그래머스] Lv2. 주식가격 (스택/큐)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 파악초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.제한사항prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices의 길이는 2 이상 100,000 이하입니다.입출력 예pricesreturn[1, 2, 3, 2, 3][4, 3, 1, 1, 0]초 단위로 기록된 주식가격이 담긴 배열 price, 가격이 떨어지지 않은 기간은 몇 초인지 return1은 5초때까지 떨어진 적이 없음 → 4초2는 오름 2, 유지 1 ..

[프로그래머스] LV2. 기능 개발 (스택/큐)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 파악프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.제한 사항작업의 개수..

[MySQL] Mac 환경에서 sample 데이터 다운 받기

윈도우 환경에서는 설치와 동시에 샘플 데이터를 바로 다운받을 수 있는데 맥에서는 바로 다운이 안되어서 수동으로 설치해줘야 한다.샘플 데이터 다운로드 https://dev.mysql.com/doc/index-other.html MySQL :: Other MySQL DocumentationOther MySQL Documentation This page provides additional documentation. There's even more available on these extra pages: MySQL Server Doxygen Documentation Title HTML Online MySQL Server (latest version) View Expert Guides Example Databas..

Back-end/Database 2025.05.12

[알고리즘] 암시적 그래프

암시적 그래프암시적 그래프(Implicit Graph)는 명시적으로 노드와 간선을 저장하지 않고, 탐색하면서 그래프 구조를 동적으로 유추하는 방식탐색 과정에서 이동 가능한 노드(정점)와 연결관계(간선)를 문제의 조건을 기반으로 판별“그래프를 그리지 않았지만 탐색할 수 있는 모든 경우의 수가 노드처럼 동작한다."그리고 "어떤 상태에서 이동할 수 있는 다른 상태들이 연결된 간선처럼 동작한다."rowLength = row 수(행 개수)는 grid의 크기colLength = column 수(열 개수)는 첫 번째 행의 크기인접리스트 없이 nextVertex 찾는 방법(암시적 그래프)현재 위치에서 상하좌우로 이동하여, 다음 노드(nextVertex)를 동적으로 찾는다.단순히 상하좌우를 탐색하다 보면 배열의 범위를 ..

Algorithm 2025.05.11

[알고리즘] 너비 우선 탐색 (BFS)

너비 우선 탐색 (BFS)너비 우선 탐색(Breadth First Search)은 시작 정점에서 가까운 노드부터 차례로 탐색하는 방식이다.먼저 방문한 노드를 기준으로 인접한 노드들을 한 층씩 넓게 탐색큐(Queue) 자료구조를 이용해서 구현한다.큐 (Queue)탐색 방식이 선입선출(FIFO) 특성을 가지기 때문에 큐가 적합하다.먼저 거리가 1인 노드를 넣어놓고, 2인 인접노드를 넣으면서 탐색.거리가 1인 (인접한) 노드부터 처리함.동작 방식인접리스트 그래프 graph 로 표현, 방문을 저장할 배열 visited 초기화큐에 시작 노드를 추가 (방문 처리)큐에서 노드를 꺼낸 후 인접 노드 탐색꺼낸 노드의 인접 노드를 큐에 저장 (추가하면 방문처리)큐가 비어있을 때 까지 반복활용 예시최단 경로(거리) 찾기레벨..

Algorithm 2025.05.11

[알고리즘] 깊이 우선 탐색(DFS)

알고리즘 개념에 대해서도 정리를 하기로 했다.이미 깃허브에도 올리고, 따로 마크다운으로 정리하지만블로그에도 추가하면서 다른 사람들도 볼 수 있고 내 블로그의 번영?을 위해서ㅋㅋㅋ 올리기로 했다. 깊이 우선 탐색 (DFS)깊이 우선 탐색(Depth-First Search)은 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다.재귀함수나 스택 자료구조를 사용하여 구현한다.재귀함수깊이를 따라 들어갔다가, 막히면 되돌아오는 패턴을 가지기 때문에 재귀함수로 구현할 수 있다.쉽게 한 놈씩 한 놈만 패는 구조로 타고, 타고, 타고 들어가서 한 놈만 찾아낸다고 생각하면 쉽다.동작 방식인접 리스트 그래프로 표현, 방문을 저..

Algorithm 2025.05.08