반응형 [C++로 배우는 알고리즘과 자료구조] Day 3: 연결 리스트 (단일, 이중, 원형) 연결 리스트 (Linked List)연결 리스트는 노드들이 포인터로 연결된 선형 자료구조입니다. 각 노드는 데이터와 다음 노드를 가리키는 포인터를 포함합니다. 연결 리스트는 동적 메모리 할당을 사용하여 크기를 유연하게 조정할 수 있습니다.연결 리스트의 종류:단일 연결 리스트 (Singly Linked List)이중 연결 리스트 (Doubly Linked List)원형 연결 리스트 (Circular Linked List)단일 연결 리스트 (Singly Linked List)단일 연결 리스트는 각 노드가 다음 노드를 가리키는 포인터를 가진 자료구조입니다.단일 연결 리스트 구현노드 구조체 정의#include // 단일 연결 리스트의 노드 구조체struct Node { int data; // 데이터 .. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 3: 개발 환경 설정 (Visual Studio, CMake, SFML/SDL 설치) 개발 환경 설정게임 개발을 시작하기 위해서는 먼저 개발 환경을 설정해야 합니다. 오늘은 Visual Studio와 CMake를 사용하여 SFML과 SDL을 설치하고 설정하는 방법을 학습하겠습니다.1. Visual Studio 설치 및 설정Visual Studio 설치:Visual Studio는 강력한 C++ 개발 환경을 제공합니다. Visual Studio 다운로드 페이지에서 설치 파일을 다운로드하고 설치합니다.설치 중 "Desktop development with C++" 워크로드를 선택합니다.새 프로젝트 생성:Visual Studio를 실행하고, "Create a new project"를 선택합니다."Empty Project"를 선택하고, 프로젝트 이름과 위치를 지정한 후 "Create"를 클릭합니다.. 2024. 8. 1. [C++로 배우는 알고리즘과 자료구조 심화] Day 3: 펜윅 트리 (Fenwick Tree, Binary Indexed Tree) 펜윅 트리 (Fenwick Tree, Binary Indexed Tree)펜윅 트리(BIT, Fenwick Tree)는 배열의 구간 합을 효율적으로 계산하고 업데이트할 수 있는 자료구조입니다. 세그먼트 트리와 유사하지만, 구현이 더 간단하고 메모리 사용량이 적습니다.펜윅 트리의 주요 특징시간 복잡도:업데이트: (O(\log n))쿼리: (O(\log n))구현 방법:트리의 각 노드는 배열의 특정 구간에 대한 정보를 저장합니다.이진수의 비트 연산을 활용하여 구간을 관리합니다.펜윅 트리의 기본 연산업데이트 (Update): 특정 인덱스의 값을 업데이트합니다.쿼리 (Query): 특정 인덱스까지의 구간 합을 계산합니다.펜윅 트리의 구현다음은 C++로 펜윅 트리를 구현한 예제입니다. 구간 합을 구하고 구간 값을.. 2024. 8. 1. [C++ 임베디드 시스템 프로그래밍 시리즈] Day 3: 개발 환경 설정 (툴체인, IDE) 임베디드 시스템 개발 환경 설정임베디드 시스템 개발을 위해서는 적절한 개발 환경을 설정하는 것이 중요합니다. 오늘은 개발 환경 설정에 필요한 툴체인과 IDE를 다루겠습니다.1. 툴체인 (Toolchain)툴체인은 소프트웨어 개발을 위해 필요한 컴파일러, 링커, 디버거 등의 도구 모음을 의미합니다. 임베디드 시스템 개발에서는 주로 GCC(GNU Compiler Collection) 툴체인이 사용됩니다. 1.1 GCC 툴체인 설치GCC 툴체인은 여러 플랫폼에서 사용할 수 있으며, 설치 방법은 다음과 같습니다.Windows:MinGW(Minimalist GNU for Windows) 또는 MSYS2를 사용하여 설치할 수 있습니다.MinGW 다운로드MSYS2 다운로드macOS:Homebrew 패키지 관리자를 사.. 2024. 8. 1. [C++ 마스터] Day 4: 연산자와 표현식 연산자 (Operators)연산자는 변수나 값에 대해 다양한 연산을 수행하는 데 사용됩니다. C++에는 여러 종류의 연산자가 있습니다. 1. 산술 연산자 (Arithmetic Operators)산술 연산자는 수학 연산을 수행합니다.+ : 덧셈- : 뺄셈* : 곱셈/ : 나눗셈% : 나머지예제:int a = 10;int b = 3;cout 2. 할당 연산자 (Assignment Operators)할당 연산자는 변수에 값을 할당합니다.= : 값 할당+= : 더한 값을 할당-= : 뺀 값을 할당*= : 곱한 값을 할당/= : 나눈 값을 할당%= : 나머지 값을 할당예제:int a = 10;a += 5; // a = a + 5; -> 15a -= 3; // a = a - 3; -> 12a *= 2; //.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 4: C++20의 개념과 모듈 Concepts (개념)Concepts는 템플릿 인자의 요구사항을 명확히 정의하는 새로운 기능입니다. Concepts를 사용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다. Concepts의 기본 사용법Concepts는 템플릿 인자에 대해 특정 조건을 명시할 수 있습니다. 이를 통해 템플릿 함수나 클래스가 특정 타입이나 속성에 대해서만 작동하도록 할 수 있습니다. 기본 사용법 예제#include #include // 정수 타입에 대해서만 작동하는 Concept 정의template concept Integral = std::is_integral_v;// Integral 타입에 대해서만 작동하는 함수template void func(T value) { std::cout 위의 코드에서 In.. 2024. 8. 1. [C++ 네트워크 프로그래밍] Day 4: 비동기 소켓 프로그래밍 비동기 소켓 프로그래밍비동기 소켓 프로그래밍은 네트워크 통신에서 비동기 I/O를 사용하여 동시성을 높이고, CPU의 유휴 시간을 줄이는 방법입니다. 비동기 프로그래밍을 통해 소켓의 I/O 작업을 비동기적으로 처리할 수 있습니다. 이를 통해 하나의 스레드가 여러 I/O 작업을 처리할 수 있습니다.비동기 소켓 프로그래밍의 주요 개념블로킹과 논블로킹 I/O블로킹 I/O: 함수 호출이 완료될 때까지 호출한 스레드가 대기 상태에 있습니다. 예를 들어, recv() 함수는 데이터가 수신될 때까지 블로킹됩니다.논블로킹 I/O: 함수 호출이 즉시 반환되며, 호출한 스레드는 다른 작업을 계속 수행할 수 있습니다. 데이터가 준비되지 않은 경우, 에러를 반환합니다.비동기 I/O비동기 I/O: I/O 작업을 비동기적으로 처리.. 2024. 8. 1. [C++ 성능 최적화 및 고급 테크닉] Day 4: 캐시 최적화 기법 캐시 최적화의 중요성캐시 최적화는 프로그램의 성능을 극대화하는 데 매우 중요한 역할을 합니다. 캐시 메모리는 CPU가 메인 메모리보다 훨씬 빠르게 접근할 수 있는 작은 크기의 고속 메모리입니다. 데이터 로컬리티를 높여 캐시 히트율을 최대화하면 프로그램의 실행 속도가 크게 향상됩니다. 데이터 로컬리티데이터 로컬리티는 CPU가 데이터를 빠르게 접근할 수 있도록 데이터를 메모리에 배치하는 방법을 의미합니다. 데이터 로컬리티에는 두 가지 유형이 있습니다.시간적 로컬리티 (Temporal Locality): 최근에 접근한 데이터에 다시 접근하는 경향이 있는 경우.공간적 로컬리티 (Spatial Locality): 가까운 메모리 주소에 있는 데이터에 접근하는 경향이 있는 경우. 캐시 최적화 기법1. 연속된 메모리 .. 2024. 8. 1. [C++로 배우는 알고리즘과 자료구조] Day 4: 스택과 큐 스택 (Stack)스택은 후입선출(LIFO, Last In First Out) 원칙을 따르는 자료구조입니다. 즉, 가장 나중에 삽입된 요소가 가장 먼저 제거됩니다. 스택은 주로 재귀적 알고리즘, 언어 구문 분석, 백트래킹 등에서 사용됩니다.스택의 주요 연산:push: 스택의 맨 위에 요소를 추가합니다.pop: 스택의 맨 위 요소를 제거합니다.top: 스택의 맨 위 요소를 반환합니다.isEmpty: 스택이 비어 있는지 확인합니다.스택 구현 예제#include #include class Stack {public: void push(int value) { data.push_back(value); // 스택의 맨 위에 요소 추가 } void pop() { if (!dat.. 2024. 8. 1. [C++로 배우는 알고리즘과 자료구조 심화] Day 4: 이면 탐색 트리 (Treap) 이면 탐색 트리 (Treap)이면 탐색 트리(Treap)는 이진 탐색 트리(BST)와 힙(Heap)의 특성을 동시에 가지는 자료구조입니다. 각 노드는 키(key)와 우선순위(priority)를 가지며, 다음 두 가지 성질을 만족합니다:이진 탐색 트리 성질: 키의 값에 대해 이진 탐색 트리 성질을 만족합니다.힙 성질: 우선순위에 대해 최대 힙 또는 최소 힙 성질을 만족합니다.트라이의 주요 특징삽입, 삭제, 검색:평균 시간 복잡도: (O(\log n))최악의 경우 시간 복잡도: (O(n))회전 연산:이중회전을 통해 트리의 균형을 유지합니다.트라이의 기본 연산삽입 (Insert): 새로운 노드를 삽입합니다.삭제 (Delete): 특정 키를 가진 노드를 삭제합니다.검색 (Search): 특정 키를 가진 노드를 .. 2024. 8. 1. 이전 1 ··· 37 38 39 40 41 42 43 ··· 51 다음 반응형