개발자 27

[자료구조] 트리(Tree)

트리 (Tree)트리(Tree)는 노드들이 계층적으로 연결된 비선형 자료구조로, 루트 노드와 부모-자식 관계의 서브트리들로 구성된다,트리는 재귀적으로 정의된다.트리에서는 DFS가 쓰이는 경우가 좀 더 많다.용어노드 (Node): 트리의 각 요소를 말하며, 데이터(값)와 포인터(자식 노드를 가리키는 링크)를 포함한다.간선 (Edge): 노드와 노드를 연결하는 선으로, 부모와 자식 노드 간의 관계를 나타냄루트 노드(Root Node): 트리의 최상위 노드, 부모 노드가 없다. 트리는 하나의 루트 노드만 가질 수 있다.부모 노드(Parent Node): 트리 구조에서 다른 노드(자식 노드)를 가리키고 연결을 유지하는 상위 노드자식 노드(Child Node): 부모 노드로부터 파생된 하위 노드서브트리(Subtr..

Algorithm 2025.05.28

[프로그래머스] Lv2. 주차 요금 계산 (HashMap)

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 파악요금표, 차의 입/출차 기록이 주어질 때, 각 차량의 정산된 요금을 계산해서 반환하는 문제까다로운 점은 요금표는 정수형 배열, 입/출차 기록은 "차량번호 시간 in/out" 형태로 주어진다. 문제 설명은 문제 링크에서 확인!!입출력 예feesrecordsresult[180, 5000, 10, 600]["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00..

[프로그래머스] Lv3. 양과 늑대 (DFS)

프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 파악2진 트리 구조의 초원에서 양을 모으는 문제늑대의 수가 같거나 더 많아서는 안된다.늑대에게 양이 잡아먹히지 않게 하면서 최대한 양을 많이 모으는 문제이다. 제한사항2 ≤ info의 길이 ≤ 17info의 원소는 0 또는 1 입니다.info[i]는 i번 노드에 있는 양 또는 늑대를 나타냅니다.0은 양, 1은 늑대를 의미합니다.info[0]의 값은 항상 0입니다. 즉, 0번 노드(루트 노드)에는 항상 양이 있습니다.edges의 세로(행) 길이 = info의 길이 - 1edges의 가로(열) 길이 = 2edges의 각 행은 [부모 노드 번호, 자식 노드 번호] 형..

[MySQL] 정규화(Normalization)

정규화정규화(Normalization) : 이상 현상이 발생하지 않도록, 릴레이션(테이블)을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해(decomposition)하는 과정 데이터의 중복을 최소화하고, 데이터의 무결성을 유지하며, 효율적인 구조로 테이블을 구성하기 위한 논리적 설계 과정이라고 볼 수 있다. 이상현상(anomaly) : 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입·수정·삭제 연산을 수행할 때 발생할 수 있는 부작용이상 현상의 종류삽입 이상새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제갱신 이상중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제삭제 이상투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제 정규화는 이..

Back-end/Database 2025.05.25

[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/Nossi 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 함수를 완성하세요.제한 사항작업의 개수..