C++ 해시 기반 컨테이너: unordered_set과 unordered_map의 핵심 활용 및 성능 비교

unordered_set과 unordered_map은 C++ 표준 라이브러리에서 제공하는 해시 기반 연관 컨테이너로, 삽입·탐색·삭제 연산의 평균 시간 복잡도가 O(1)인 특징을 가집니다. 이들은 정렬된 순서를 보장하지 않으며, 대신 키의 해시 값에 기반한 버킷 분배를 통해 고성능을 실현합니다. 기본 구조와 템플릿 매개변수 두 컨테이너는 다음과 같은 일반화된 템플릿 인터페이스를 따 ...

8월 17일 14:14에 게시됨

고급 문자열 처리 알고리즘

문자열 처리 문제 해결 전략 문자열은 다양한 알고리즘 문제의 핵심 데이터 구조입니다. 다음은leetcode 기반의 대표적인 문자열 알고리즘 문제들에 대한 구현과 해설입니다. 1. 문자열 뒤집기 입력된 바이트 배열을 제자리에서 뒤집는 문제입니다. 투 포인터 기법을 사용해 앞뒤로 교환하며 처리합니다. func reverseInPlace(data []byte) { n := len(data) ...

8월 1일 09:51에 게시됨

해시 테이블의 활용 및 알고리즘 문제 해결

한글로 작성된 기술적 내용은 다음과 같습니다. 1. 해시 테이블의 기본 개념 해시 테이블은 데이터 구조 중 하나로, 주어진 키 값에 따라 데이터를 직접 접근할 수 있도록 합니다. 정의: 배열과 유사하게 동작하며, 인덱스를 통해 데이터에 접근합니다. 그러나 해시 테이블에서는 특정 함수(해시 함수)가 입력값을 변환하여 저장 위치를 결정합니다. 해시 충 ...

7월 4일 01:30에 게시됨

Java HashMap 핵심 소스 코드 직접 구현하기

Java HashMap 핵심 소스 코드 직접 구현하기 이전 글에서는 LinkedList의 핵심 소스 코드를 직접 구현해 보았습니다. 이번에는 Java HashMap의 핵심 소스 코드를 직접 구현해 보겠습니다. HashMap의 원리를 먼저 살펴보겠습니다. HashMap은 이름에서 알 수 있듯이 hash와 map의 조합입니다. map은 매핑이라는 의미이고, HashMap은 hash를 활용하여 키-값 쌍을 저장하는 ...

6월 22일 19:56에 게시됨

코딩 면접 문제 풀이 모음

두 수의 합 구하기 정수 배열이 주어졌을 때, 지정된 합계가 되는 두 개의 요소를 찾는 문제를 해결해 보겠습니다. 먼저 기본 접근법의 시간 복잡도를 분석한 후, O(n) 알고리즘으로 개선하겠습니다. def solve(): data = [11, 7, 45, 67, 134, 5, 83, 55, 106, 33, 57, 82, 6, 24, 87, 61, 3, 39, 6, 26] target = 13 result, a, b = find_pair(data, targe ...

6월 13일 22:41에 게시됨