캡슐화된 체인 포워드 스타 구현
체인 포워드 스타 클래스 (캡슐화 버전)
struct ChainForwardStar {
vector<int> head, to, next, weight;
int edgeCount = 0;
ChainForwardStar(int capacity) {
head.assign(capacity + 1, -1);
to.resize(capacity + 1);
next.resize(capacity + 1);
weight.resize(capacity + 1);
}
void connect ...
7월 4일 17:41에 게시됨
Java HashMap 핵심 소스 코드 직접 구현하기
Java HashMap 핵심 소스 코드 직접 구현하기
이전 글에서는 LinkedList의 핵심 소스 코드를 직접 구현해 보았습니다. 이번에는 Java HashMap의 핵심 소스 코드를 직접 구현해 보겠습니다. HashMap의 원리를 먼저 살펴보겠습니다.
HashMap은 이름에서 알 수 있듯이 hash와 map의 조합입니다. map은 매핑이라는 의미이고, HashMap은 hash를 활용하여 키-값 쌍을 저장하는 ...
6월 22일 19:56에 게시됨
집합(Set) 자료구조와 배열의 차이점
집합(Set)은 고유한 값만을 저장하는 자료구조로, 배열과 유사하지만 중요한 차이점을 가지고 있습니다.
집합과 배열의 주요 차이점
고유성: 집합은 중복 값을 허용하지 않아 자동으로 중복 제거 기능을 제공합니다. 반면 배열은 동일한 값을 여러 번 포함할 수 있습니다.
정렬 여부: 집합은 요소의 순서를 보장하지 않는 반면, 배열은 삽입된 순서를 유지합니다.
성능 특 ...
6월 6일 02:55에 게시됨
PHP 데이터 타입 조작과 함수 정의 패턴
배열 데이터 구조 활용
PHP 에서 데이터를 효과적으로 관리하기 위해서는 배열의 유형을 정확히 구별하여 사용해야 합니다. 주요 형태로는 키와 값을 가진 연관 배열과 순차적인 숫자 인덱스를 사용하는 수치 배열이 있습니다.
연관 배열 구성
특정 이름을 가지는 요소들을 저장할 때 연관 배열이 적합합니다. 아래 예시는 직원 나이를 이름에 매핑하여 정의하는 과정을 ...
6월 1일 05:42에 게시됨
이진 트리의 핵심 개념과 활용
이진 트리는 계층적 데이터를 표현하는 대표적인 비선형 자료구조로, 각 노드가 최대 두 개의 자식을 가지는 구조를 말합니다. 분할 정복의 "반으로 나누기" 전략을 직관적으로 구현할 수 있어 다양한 알고리즘의 기반이 됩니다.
노드 구조와 기본 개념
이진 트리의 기본 단위인 노드는 데이터 값과 두 개의 자식 참조로 구성됩니다. 부모-자식 관계를 통해 하위 트리가 ...
5월 23일 05:59에 게시됨
알고리즘 문제 해결을 위한 표준 템플릿 라이브러리
알고리즘 경진대회 참가자들은 다양한 알고리즘과 자료구조를 숙지하고 있어야 하며, 이를 효율적으로 구현하기 위해 여러 템플릿을 정리해두는 것이 중요하다.
코드 작성 시 주의사항
전역 변수 사용은 피해야 한다. 디버깅이 어렵고 코드의 가독성을 해친다.
표준 라이브러리(STL)을 적극 활용하자. 스택, 큐, 벡터 등을 직접 구현하는 것보다 안정적이다.
#define in ...
5월 22일 23:09에 게시됨
그래프, 트리,链表 자료구조 완벽 가이드
기본 개념 및 전제 지식
1. 유니온-파인드 (Disjoint Set Union)
유니온-파인드 자료구조는 서로소 집합을 관리하는 데 사용되는 효율적인 알고리즘입니다. 주로 최소 신장 트리, 사이클 检测, 집합 합치기 등의 문제에 활용됩니다.
핵심 연산:
find: 특정 원소의 집합 대표자(ROOT)를 찾습니다. 경로 압축 기법으로 성능을 최적화합니다.
merge: 두 집합을 하나의 집 ...
5월 21일 00:46에 게시됨
Java ArrayDeque 클래스 완벽 가이드
ArrayDeque 개요
ArrayDeque는 双端큐(Double-Ended Queue)의 구현체로, 내부적으로 배열을 사용하여 데이터를 저장합니다. 내부 배열은 환형(cyclic) 구조로 동작하여 효율적인 메모리 활용이 가능합니다.
상속 구조
ArrayDeque 클래스는 Deque 인터페이스를 구현합니다. Deque 인터페이스는 양쪽 끝에서 자유롭게 데이터를 추가하고 제거할 수 있는 연산을 제공합니다.
D ...
5월 20일 15:30에 게시됨