목록2025/05 (18)
mooni

비선형 자료구조란?비선형 자료구조는 데이터가 순차적으로 나열되지 않고, 요소 간의 관계가 복잡하고 계층적인 구조를 이루는 자료구조입니다. 대표적으로 트리(Tree)와 그래프(Graph)가 있습니다.1. 그래프 (Graph)정점(Vertex): 하나의 지점을 의미 (ex. 도시, 사람)간선(Edge): 정점 간의 연결 (ex. 도로, 친구 관계)방향성: 단방향 그래프, 양방향 그래프로 나뉨가중치(Weight): 간선에 부여된 비용 또는 거리2. 트리 (Tree)트리는 그래프의 일종으로, 계층적 구조를 가진 비선형 자료구조입니다.루트 노드: 최상위 노드리프 노드: 자식이 없는 노드내부 노드: 자식이 있는 노드서브트리: 어떤 노드를 루트로 하는 부분 트리주요 개념V(노드 수) - 1 = E(간선 수)깊이(De..

선형 자료구조란?선형 자료구조(Linear Data Structure)는 데이터가 일렬로 나열된 형태로 저장되는 자료구조입니다. 요소 간의 순서가 명확하며, 앞뒤 요소와의 관계를 기반으로 연산이 수행됩니다.1. 연결 리스트 (Linked List)데이터를 노드(Node)라는 단위로 저장하고, 포인터를 통해 다음 노드와 연결하는 방식의 자료구조입니다.삽입/삭제: O(1) (포인터만 조작하면 되므로 빠름)탐색: O(n) (선형 탐색 필요)종류싱글 연결 리스트: next 포인터만 존재 (한 방향으로만 순회)이중 연결 리스트: next, prev 포인터를 모두 가짐 (양방향 순회 가능)원형 이중 연결 리스트: 마지막 노드의 next가 헤드 노드를 가리킴, 원형 순회 가능2. 배열 (Array)같은 타입의 데이터..

자료구조란?자료구조(Data Structure)는 데이터를 효율적으로 저장, 수정, 삭제, 탐색할 수 있도록 도와주는 데이터의 집합 및 구조입니다. 알고리즘과 함께 사용되며, 문제를 해결하는 기반이 됩니다. 복잡도란?복잡도는 알고리즘이나 자료구조가 사용하는 시간(연산량)과 공간(메모리)을 측정하는 기준입니다. 1. 시간 복잡도(Time Complexity)입력 크기(n)에 따라 알고리즘이 실행되는 데 걸리는 시간 2. 공간 복잡도(Space Complexity)알고리즘이 실행될 때 필요로 하는 메모리 양int a[1004]; // 1004개의 int → 1004 * 4 byte = 4016 byte 빅오(Big-O) 표기법가장 영향력이 큰 항만을 남기고 상수와 하위 항을 제거한 표현법O(1) 자료구조에..

Q. 문제마인은 곡괭이로 광산에서 광석을 캐려고 합니다. 마인은 다이아몬드 곡괭이, 철 곡괭이, 돌 곡괭이를 각각 0개에서 5개까지 가지고 있으며, 곡괭이로 광물을 캘 때는 피로도가 소모됩니다. 각 곡괭이로 광물을 캘 때의 피로도는 아래 표와 같습니다.예를 들어, 철 곡괭이는 다이아몬드를 캘 때 피로도 5가 소모되며, 철과 돌을 캘때는 피로도가 1씩 소모됩니다. 각 곡괭이는 종류에 상관없이 광물 5개를 캔 후에는 더 이상 사용할 수 없습니다.마인은 다음과 같은 규칙을 지키면서 최소한의 피로도로 광물을 캐려고 합니다.사용할 수 있는 곡괭이중 아무거나 하나를 선택해 광물을 캡니다.한 번 사용하기 시작한 곡괭이는 사용할 수 없을 때까지 사용합니다.광물은 주어진 순서대로만 캘 수 있습니다.광산에 있는 모든 광물..
Q. 문제과제를 받은 루는 다음과 같은 순서대로 과제를 하려고 계획을 세웠습니다.과제는 시작하기로 한 시각이 되면 시작합니다.새로운 과제를 시작할 시각이 되었을 때, 기존에 진행 중이던 과제가 있다면 진행 중이던 과제를 멈추고 새로운 과제를 시작합니다.진행중이던 과제를 끝냈을 때, 잠시 멈춘 과제가 있다면, 멈춰둔 과제를 이어서 진행합니다.만약, 과제를 끝낸 시각에 새로 시작해야 되는 과제와 잠시 멈춰둔 과제가 모두 있다면, 새로 시작해야 하는 과제부터 진행합니다.멈춰둔 과제가 여러 개일 경우, 가장 최근에 멈춘 과제부터 시작합니다.과제 계획을 담은 이차원 문자열 배열 plans가 매개변수로 주어질 때, 과제를 끝낸 순서대로 이름을 배열에 담아 return 하는 solution 함수를 완성해주세요. * ..

조인이란?조인(Join)은 두 개 이상의 테이블을 묶어서 하나의 결과 테이블을 만드는 SQL 연산입니다. 일반적으로 관계형 데이터베이스에서 테이블 간 관계를 활용해 데이터를 결합할 때 사용됩니다.MySQL: JOIN 키워드 사용MongoDB: lookup 연산 사용 (하지만 성능 저하로 인해 빈번한 사용은 지양됨)조인의 종류1. INNER JOIN (내부 조인)양쪽 테이블에 공통된 값이 존재하는 경우에만 결과에 포함SELECT * From TableA AINNER JOIN TableB B ONA.key = B.key 2. LEFT OUTER JOIN (왼쪽 외부 조인)왼쪽 테이블의 모든 행을 포함하며, 오른쪽 테이블과 일치하지 않으면 NULL 처리SELECT * FROM TableA ALEFT JOIN ..

인덱스란?인덱스는 데이터베이스에서 데이터를 빠르게 찾을 수 있도록 도와주는 장치입니다. 책의 목차처럼, 원하는 데이터를 빠르게 탐색할 수 있는 구조를 제공합니다. 인덱스의 자료구조 B-트리RDBMS에서 가장 많이 사용하는 인덱스 구조는 B-트리(Balanced Tree)입니다.루트 노드: 트리의 최상단브랜치 노드: 중간 단계 노드 (하위 노드 가짐)리프 노드: 실제 데이터 위치를 가리키는 노드인덱스가 효율적인 이유균형 잡힌 트리 구조: 트리 깊이가 일정하여 전체를 순회하지 않아도 검색 가능대수적 확장성: 트리 깊이가 하나 늘어날 때마다 최대 인덱스 항목 수는 4배씩 증가인덱스 생성 방법1. MySQL 인덱스(1) 클러스터형 인덱스 (Primary Index)테이블당 하나만 생성 가능기본키(PK)나 UNI..

트랜잭션(Transaction)이란?데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위여러 개의 쿼리들을 하나로 묶어 일괄 처리할 수 있도록 함모든 쿼리가 정상적으로 실행되어야만 전체 트랜잭션을 확정(commit)하며, 하나라도 실패하면 전부 취소(rollback) 가능ACID: 트랜잭션의 4대 특징1. 원자성 (Atomicity)트랜잭션 내 모든 작업이 완전히 수행되거나 전혀 수행되지 않아야 함일부만 실행된 상태로 남아선 안 됨관련 명령어커밋(commit): 트랜잭션 내 쿼리들이 정상적으로 완료되었음을 확정하고 변경 내용을 영구 반영롤백(rollback): 트랜잭션 처리 중 문제가 발생했을 때 변경 내용을 전부 취소하고 되돌림➡ 커밋과 롤백은 데이터 무결성을 지키기 위한 핵심 도구 2. ..