반응형 -----ETC-----295 [C++로 배우는 알고리즘과 자료구조] Day 11: 그래프의 기본 개념 그래프 (Graph)그래프는 노드(정점, Vertex)와 간선(Edge)으로 구성된 자료구조로, 여러 노드가 간선으로 연결된 형태를 가집니다. 그래프는 다양한 문제를 모델링하고 해결하는 데 사용됩니다.그래프의 구성 요소:노드 (Vertex): 그래프의 개별 요소입니다.간선 (Edge): 노드 간의 연결을 나타냅니다.그래프의 종류:방향 그래프 (Directed Graph): 간선이 방향을 가지는 그래프입니다.무방향 그래프 (Undirected Graph): 간선이 방향을 가지지 않는 그래프입니다.가중치 그래프 (Weighted Graph): 간선에 가중치가 있는 그래프입니다.비가중치 그래프 (Unweighted Graph): 간선에 가중치가 없는 그래프입니다.그래프의 표현 방법그래프는 다음과 같은 방법으로.. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 11: 타일 맵과 맵 에디터 사용법 타일 맵과 맵 에디터 사용법타일 맵은 작은 이미지를 배열하여 큰 지도를 만드는 기술입니다. 게임 개발에서 주로 배경이나 맵 디자인에 사용됩니다. 오늘은 타일 맵을 생성하고, 이를 관리하기 위한 맵 에디터 사용법을 학습하겠습니다.타일 맵 기본 개념타일 맵은 여러 개의 작은 이미지를 사용하여 큰 맵을 구성합니다. 각 타일은 동일한 크기를 가지며, 타일 맵은 2차원 배열로 표현됩니다.타일(Tile): 맵을 구성하는 기본 단위입니다. 타일은 주로 정사각형이나 직사각형 모양을 가집니다.타일셋(Tileset): 여러 타일 이미지를 하나의 큰 이미지로 모아 놓은 것입니다.타일 맵(Tile Map): 타일을 배열하여 큰 지도를 만든 것입니다. 2차원 배열로 표현됩니다.SFML을 사용한 타일 맵 구현타일셋 이미지먼저, .. 2024. 8. 1. [C++로 배우는 알고리즘과 자료구조 심화] Day 11: 강한 연결 요소 (Kosaraju, Tarjan 알고리즘) 강한 연결 요소 (Strongly Connected Components, SCC)강한 연결 요소(SCC)는 방향 그래프에서 각 정점이 서로 도달 가능한 최대 부분 그래프입니다. 즉, SCC의 모든 정점 u, v에 대해 u에서 v로 가는 경로와 v에서 u로 가는 경로가 모두 존재합니다.Kosaraju's AlgorithmKosaraju's Algorithm은 그래프를 두 번의 DFS로 탐색하여 SCC를 찾는 알고리즘입니다.Kosaraju's Algorithm의 단계:DFS: 원본 그래프에서 DFS를 수행하여 정점을 완료된 순서대로 스택에 저장합니다.전치 그래프 생성: 모든 간선의 방향을 반전시킨 그래프를 만듭니다.DFS: 스택에서 정점을 꺼내어 전치 그래프에서 DFS를 수행합니다.Kosaraju's Alg.. 2024. 8. 1. [C++ 임베디드 시스템 프로그래밍 시리즈] Day 11: 조도 센서와 제어 조도 센서의 개요조도 센서는 주변 환경의 밝기를 측정하여 아날로그 또는 디지털 신호로 출력하는 장치입니다. 임베디드 시스템에서는 조도 센서를 사용하여 조명 제어, 디스플레이 밝기 조절 등의 응용 프로그램에 활용할 수 있습니다. 오늘은 조도 센서를 사용하는 방법을 학습하겠습니다.1. 조도 센서 종류조도 센서는 출력 신호 형태에 따라 아날로그 센서와 디지털 센서로 나눌 수 있습니다.아날로그 조도 센서: LDR(Light Dependent Resistor), TEMT6000 등. 아날로그 전압을 출력하며, 이를 ADC를 통해 읽습니다.디지털 조도 센서: BH1750, TSL2561 등. 디지털 데이터를 출력하며, I2C 등의 인터페이스를 사용합니다.2. 아날로그 조도 센서 사용LDR(Light Dependen.. 2024. 8. 1. [C++ 마스터] Day 12: 클래스와 객체 지향 프로그래밍 (OOP) 기초 객체 지향 프로그래밍 (Object-Oriented Programming)객체 지향 프로그래밍(OOP)은 객체를 중심으로 프로그램을 구성하는 프로그래밍 패러다임입니다. C++는 OOP를 지원하며, 이를 통해 더 구조적이고 재사용 가능한 코드를 작성할 수 있습니다. OOP의 주요 개념에는 클래스, 객체, 상속, 다형성, 캡슐화, 추상화 등이 있습니다. 클래스 (Classes)클래스는 객체를 정의하는 데 사용되는 청사진 또는 틀입니다. 클래스는 데이터 멤버(변수)와 멤버 함수(메서드)를 포함합니다. 1. 클래스 선언과 정의클래스를 선언하고 정의하는 방법은 다음과 같습니다:class Car {public: // 접근 지정자 string brand; string model; int year; .. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 12: 디자인 패턴 심화 - 데코레이터 패턴 (Decorator Pattern) 데코레이터 패턴 (Decorator Pattern)데코레이터 패턴은 객체에 동적으로 새로운 기능을 추가할 수 있도록 하는 구조 패턴입니다. 이 패턴을 사용하면 서브클래싱 없이도 객체의 기능을 확장할 수 있습니다. 데코레이터 패턴은 기본 객체와 그 객체의 데코레이터를 동일한 인터페이스로 취급하여 기능을 확장합니다. 데코레이터 패턴의 특징동적 기능 확장: 객체의 기능을 동적으로 확장할 수 있습니다.개방-폐쇄 원칙: 기존 코드의 수정 없이 새로운 기능을 추가할 수 있습니다.유연한 설계: 상속 대신 합성을 사용하여 기능을 확장합니다.데코레이터 패턴의 구조Component (구성 요소): 기본 객체 인터페이스 또는 추상 클래스ConcreteComponent (구체적 구성 요소): 기본 객체의 구체적 구현Decor.. 2024. 8. 1. [C++로 배우는 알고리즘과 자료구조] Day 8: 균형 이진 탐색 트리 (AVL 트리) 균형 이진 탐색 트리 (AVL Tree)AVL 트리는 자가 균형 이진 탐색 트리의 일종으로, 모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1 이하로 유지되도록 합니다. AVL 트리는 삽입, 삭제 연산 후 트리의 균형을 유지하기 위해 회전을 사용합니다.AVL 트리의 특징:높이 균형: 모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1 이하입니다.높이 제한: AVL 트리의 높이는 (O(\log n))로 제한됩니다.시간 복잡도: 검색, 삽입, 삭제 연산의 평균 및 최악의 경우 시간 복잡도는 (O(\log n))입니다.AVL 트리의 주요 연산:삽입 (Insert)삭제 (Delete)검색 (Search)회전 (Rotation): 트리의 균형을 유지하기 위해 사용됩니다. (단순 회전과 .. 2024. 8. 1. [C++ 게임 개발 시리즈] Day 8: 2D 그래픽 기본 개념 2D 그래픽 기본 개념2D 그래픽은 게임 개발에서 시각적 요소를 표현하는 중요한 부분입니다. 오늘은 2D 그래픽의 기본 개념을 학습하고, 이를 SFML을 사용하여 구현하는 방법을 알아보겠습니다.2D 그래픽 기본 요소스프라이트(Sprite):스프라이트는 게임에서 캐릭터, 아이템, 배경 등의 이미지를 나타내는 2D 비트맵입니다.스프라이트는 텍스처(Texture)를 사용하여 렌더링됩니다.텍스처(Texture):텍스처는 스프라이트에 적용되는 이미지입니다.텍스처는 이미지 파일에서 로드하여 스프라이트에 매핑됩니다.애니메이션(Animation):애니메이션은 여러 스프라이트 프레임을 순차적으로 표시하여 움직임을 표현하는 기술입니다.프레임 기반 애니메이션과 보간 기반 애니메이션이 있습니다.타일 맵(Tile Map):타일.. 2024. 8. 1. [C++로 배우는 알고리즘과 자료구조 심화] Day 8: 최소 신장 트리 (Minimum Spanning Tree) 심화 최소 신장 트리 (Minimum Spanning Tree, MST)최소 신장 트리(MST)는 가중치가 있는 연결된 무향 그래프에서 모든 정점을 포함하며, 간선의 가중치 합이 최소가 되는 트리입니다. MST를 찾는 대표적인 알고리즘으로는 크루스칼 알고리즘(Kruskal's Algorithm)과 프림 알고리즘(Prim's Algorithm)이 있습니다.크루스칼 알고리즘 (Kruskal's Algorithm)크루스칼 알고리즘은 간선을 가중치의 오름차순으로 정렬한 후, 사이클을 형성하지 않는 간선을 선택하여 MST를 구성하는 알고리즘입니다.크루스칼 알고리즘의 시간 복잡도:(O(E \log E + E \log V)), 여기서 (E)는 간선의 수, (V)는 정점의 수입니다.프림 알고리즘 (Prim's Algorit.. 2024. 8. 1. 이전 1 ··· 19 20 21 22 23 24 25 ··· 33 다음 반응형