C++ STL의 map 및 set 컨테이너 심층 해설

C++의 표준 템플릿 라이브러리(STL)에서 map과 set은 연관 컨테이너로 분류되며, 주로 레드-블랙 트리 기반으로 구현되어 로그 시간 복잡도 내의 삽입/삭제/탐색 연산을 보장합니다. 이 글에서는 두 컨테이너의 내부 동작 원리와 주요 기능, 실용적인 사용 예를 살펴보겠습니다. map: 키-값 쌍의 정렬된 연결 매핑 map은 고유 키에 대응하는 값을 저장하는 연관 컨테이너 ...

9월 7일 00:02에 게시됨

알고리즘 문제 해결 전략: 비트마스크부터 수론까지

격자 상태 탐색 및 비트마스크 활용 첫 번째 문제는 주어진 격자에서 특정 행과 열을 선택하여 제거했을 때, 남아있는 검은색 셀의 개수가 정확히 K 가 되는 경우의 수를 찾는 문제이다. 행과 열의 개수가 작으므로 비트마스크를 이용하여 모든 조합을 탐색하는 방식이 적합하다. 각 행과 열에 대해 선택 여부를 비트로 표현하여 반복문을 구성한다. 선택된 행이나 열에 포 ...

8월 10일 07:39에 게시됨

상인과 수행원 강 건너기 문제의 DFS 알고리즘 구현

문제 정의 세 명의 상인과 각각 한 명의 수행원이 강을 건너야 한다. 작은 배는 최대 두 사람만 탑승할 수 있으며, 상인들이 직접 조종해야 한다. 강의 어느 쪽이든 수행원 수가 상인 수보다 많아지면 상인들을 해칠 계획이다. 상인들이 안전하게 강을 건너려면 어떻게 해야 할까? 수학적 모델링 이 문제를 해결하기 위해 깊이 우선 탐색(DFS) 알고리즘을 적용한다. 선박의 ...

8월 8일 18:46에 게시됨

C++ 컨테이너 어댑터: stack, queue 및 priority_queue의 이해와 구현

1. stack의 특징과 활용 C++ STL의 stack은 LIFO(Last-In-First-Out, 후입선출) 원칙을 따르는 컨테이너 어댑터입니다. 데이터의 삽입과 삭제가 한쪽 끝(Top)에서만 이루어지는 구조를 가집니다. 1.1 stack의 주요 인터페이스 함수 설명 push(val) 스택의 맨 위에 데이터를 추가 pop() 스택의 ...

8월 5일 00:44에 게시됨

LeetCode 코딩 문제 해결 중 발생하는 흔한 오류와 해결 방법

서론 보통 LeetCode 문제를 풀 때 저는 연습장이나 로컬 에디터를 사용하지 않고 문제 페이지의 코드 편집기에서 직접 코드를 작성합니다. 이러한 방식으로 문제를 푸는 경우 유료 기능을 사용하지 않으면 예상치 못한 버그가 발생할 수 있으며, 이를 찾는 데 많은 시간이 소요됩니다. 이 글에서는 과거에 경험한 문제들을 정리하고자 합니다. 사례 1 오랜 시간 동안 문제 ...

7월 28일 19:44에 게시됨

세그먼트 트리와 바이너리 인덱스 트리 (템플릿)

세그먼트 트리 1 - 구간 연산 및 합계 이 템플릿은 구간 더하기 연산과 구간 합을 구하는 세그먼트 트리를 구현합니다. #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> using namespace std; typedef long long ll; int arrSize, queryCount; const int MAX ...

7월 28일 18:20에 게시됨

C++ STL 표준 알고리즘 완전 가이드

1. 비수정 시퀀스 알고리즘 이 알고리즘들은 작동하는 컨테이너의 요소를 변경하지 않습니다. 1.1 find와 find_if find(begin, end, value): value와 같은 첫 번째 요소를 찾아迭代자를 반환합니다 (찾지 못하면 end 반환). find_if(begin, end, predicate): 조건자를 만족하는 첫 번째 요소를 찾습니다. find_end(begin, end, sub_begin, sub_end): 하위 시퀀스가 마지막 ...

7월 28일 01:09에 게시됨

C++ 다중 상속과 추상 클래스를 활용한 도형 클래스 설계

객체지향 프로그래밍(OOP)에서 다중 상속은 하나의 파생 클래스가 여러 개의 기초 클래스로부터 특성을 물려받는 강력한 기능입니다. 이번 포스트에서는 좌표 정보를 가진 Point 클래스와 인터페이스 역할을 하는 추상 클래스 Plane을 기반으로 Circle 클래스를 구현하는 예제를 살펴보겠습니다. 1. 기초 클래스 설계 먼저 2차원 좌표를 표현하는 Point 클래스와 도형의 ...

7월 26일 21:20에 게시됨

C++ 클래스와 객체의 심화 이해

1. 연산자 오버로딩의 보완 연산자 오버로딩 시 파라미터 순서는 사용자의 입력 순서와 일치해야 합니다. 예를 들어, operator

7월 25일 18:03에 게시됨

Kylin V10 x86_64 기반 Qt 개발 환경 구축 및 설정 가이드

1. 시스템 환경 최적화 및 업데이트 Kylin V10(x86_64) 운영체제에서 Qt 개발 환경을 구축하기 위해 가장 먼저 수행해야 할 작업은 시스템 패키지 저장소를 최신 상태로 갱신하는 것입니다. 이는 의존성 문제를 방지하고 설치 프로세스의 안정성을 확보하기 위함입니다. 터미널을 열고 다음 명령어를 실행하여 시스템 업데이트를 진행합니다. sudo apt update sudo apt up ...

7월 24일 04:33에 게시됨