컴퓨터 과학/자료구조 & 알고리즘
💻 [자료구조] 정렬 알고리즘 총정리
2025.05.12
🎯 개요정렬 알고리즘은 데이터를 일정한 순서로 배열하는 기본 개념이지만,알고리즘에 따라 성능 차이가 크고, 실무 성능 개선에 직접 연결되는 중요한 주제입니다.이번 정리는 각각의 정렬 방식을 자바 코드로 구현하고,시간복잡도 및 정렬 흐름을 직접 실험하며 이해한 내용을 기반으로 구성했습니다.📌 정렬 알고리즘 분류유형알고리즘특징단순 비교 정렬버블, 선택, 삽입 정렬구현이 쉽고 직관적, 성능은 낮음고급 정렬퀵, 병합, 힙 정렬실무 적용 가능, 성능 우수안정 정렬 여부병합, 삽입 (O) / 퀵, 선택 (X)동일한 값의 순서를 보존하는가 여부🧮 버블 정렬 (Bubble Sort)옆에 있는 값과 비교해 swap, 큰 값이 뒤로 밀려남void bubbleSort(int[] arr) { int n = arr...
컴퓨터 과학/자료구조 & 알고리즘
💻 [자료구조] 그래프 & DFS / BFS 정리 (Java 기반)
2025.05.10
🎯 개요그래프는 노드(정점)와 간선(Edge)으로 이루어진 자료구조로,네트워크, 지도, 추천 시스템 등 다양한 실세계 문제에 활용됩니다.이번에는 DFS와 BFS 탐색 방식의 차이를직접 코드로 구현하며 익혀보았습니다.🔗 그래프(Graph)란?정점(V): 연결 지점 (예: 사람, 도시 등)간선(E): 정점 간의 관계나 경로 (예: 친구 관계, 도로 등)방향 그래프 / 무방향 그래프, 가중치 그래프 등 다양한 변형 존재🗺 인접 행렬 vs 인접 리스트구조설명특징인접 행렬2차원 배열 [v][v]로 모든 간선 표현정점이 적고 간선이 많을 때 유리인접 리스트각 정점마다 연결된 노드 리스트로 구성정점이 많고 간선이 적을 때 효율적🧭 DFS (Depth-First Search)한 방향으로 깊게 파고드는 탐색스택 ..
컴퓨터 과학/자료구조 & 알고리즘
💻 [자료구조] 힙 & 우선순위 큐 정리 (Java 기반)
2025.05.10
🎯 개요평소에 자바에서 PriorityQueue를 사용해봤지만,"어떻게 우선순위대로 자동 정렬이 되는지","힙 자료구조가 내부에서 어떤 역할을 하는지" 정확히 알고 싶어서직접 정리해봤습니다.🔺 힙(Heap)이란?완전 이진 트리 형태를 가지는 트리 기반의 자료구조두 가지 종류:최소 힙(Min Heap): 부모 ≤ 자식 → 루트가 최솟값최대 힙(Max Heap): 부모 ≥ 자식 → 루트가 최댓값주로 우선순위가 가장 높은 요소를 빠르게 찾는 용도로 사용됨⏱ 시간 복잡도연산시간 복잡도삽입 (add)O(log n)삭제 (poll)O(log n)최댓값/최솟값 조회 (peek)O(1)🥇 우선순위 큐란?우선순위가 높은 요소를 먼저 꺼내는 큐일반적인 FIFO 큐와 달리, 우선순위 기준에 따라 정렬됨내부적으로 힙(H..
컴퓨터 과학/자료구조 & 알고리즘
💻 [자료구조] 트리 & 이진탐색트리 정리 (Java 기반)
2025.05.10
🎯 개요리스트나 큐, 스택과 다르게 트리 구조는계층적 관계나 빠른 탐색이 필요한 경우에 자주 등장합니다.특히 이진탐색트리(BST)는 정렬 + 탐색을 동시에 처리할 수 있어직접 구현하며 구조를 익혀봤습니다.🌳 트리(Tree)란?비선형 자료구조하나의 루트 노드(root)를 중심으로 계층적으로 자식 노드를 가짐노드 간은 사이클이 없는 방향성 있는 구조📌 트리 용어 요약용어설명루트(root)트리의 최상위 노드부모/자식계층적 관계리프(Leaf)자식이 없는 노드서브트리특정 노드를 루트로 하는 하위 트리🌲 이진탐색트리 (Binary Search Tree, BST)각 노드는 최대 두 개의 자식 노드를 가짐왼쪽 자식 규칙을 만족탐색, 삽입, 삭제 시 평균 O(log n) 시간 복잡도📋 일반 트리 vs BST ..
컴퓨터 과학/자료구조 & 알고리즘
💻 [자료구조] 스택, 큐, 덱 한 번에 정리하기
2025.05.10
🎯 개요이번에는 선입선출(FIFO), 후입선출(LIFO) 구조를 대표하는스택, 큐, 덱에 대해 개념을 정리하고,Java 기준으로 각각 어떻게 구현되는지 직접 실습해보며 정리해보았습니다.🧱 스택 (Stack)✅ 특징LIFO (Last-In, First-Out) 구조최근에 들어온 데이터가 가장 먼저 나감함수 호출 스택, 웹 뒤로 가기 등에 사용✅ 주요 연산push() : 데이터 삽입pop() : 마지막 데이터 제거 및 반환peek() : 마지막 데이터 조회 (삭제 안 함)✅ 예시Stack stack = new Stack();stack.push(10);stack.push(20);System.out.println(stack.pop()); // 20🎈 큐 (Queue)✅ 특징FIFO (First-In, Fi..