본문 바로가기
반응형
[C++로 배우는 알고리즘과 자료구조 심화] Day 10: 위상 정렬 (Topological Sorting) 위상 정렬 (Topological Sorting)위상 정렬은 유향 비순환 그래프(DAG, Directed Acyclic Graph)의 정점을 순서대로 나열하는 방법입니다. 이 순서는 모든 간선 (u, v)에 대해 정점 u가 정점 v보다 먼저 나오는 순서를 의미합니다. 위상 정렬은 주로 작업 스케줄링, 컴파일러에서의 심볼 테이블 생성 등에 사용됩니다.위상 정렬의 주요 특징DAG: 위상 정렬은 반드시 유향 비순환 그래프에서만 가능합니다.순서: 정점 u에서 정점 v로 가는 모든 경로에 대해 정점 u는 정점 v보다 먼저 나옵니다.위상 정렬의 구현 방법Kahn's Algorithm: 진입 차수를 이용한 위상 정렬DFS 기반 알고리즘: 깊이 우선 탐색을 이용한 위상 정렬Kahn's AlgorithmKahn's Al.. 2024. 8. 1.
[C++ 임베디드 시스템 프로그래밍 시리즈] Day 10: 온도 센서 제어 온도 센서의 개요온도 센서는 주변 환경의 온도를 측정하여 아날로그 또는 디지털 신호로 출력하는 장치입니다. 임베디드 시스템에서는 다양한 온도 센서를 사용하여 온도를 모니터링하고 제어할 수 있습니다. 오늘은 온도 센서를 사용하는 방법을 학습하겠습니다.1. 온도 센서 종류온도 센서는 출력 신호 형태에 따라 아날로그 센서와 디지털 센서로 나눌 수 있습니다.아날로그 온도 센서: TMP36, LM35 등. 아날로그 전압을 출력하며, 이를 ADC를 통해 읽습니다.디지털 온도 센서: DS18B20, DHT11, DHT22 등. 디지털 데이터를 출력하며, I2C, SPI, 1-Wire 등의 인터페이스를 사용합니다.2. 아날로그 온도 센서 사용TMP36 온도 센서를 사용하여 아날로그 온도를 측정하는 방법을 살펴보겠습니다.. 2024. 8. 1.
[C++ 마스터] Day 11: 구조체와 열거형 구조체 (Structures)구조체는 여러 개의 변수(필드)를 하나의 복합 데이터 타입으로 묶는 데 사용됩니다. 구조체를 사용하면 관련 있는 데이터를 하나의 단위로 다룰 수 있습니다. 1. 구조체 선언과 정의구조체를 선언하고 정의하는 방법은 다음과 같습니다:struct Person { string name; int age; double height;}; 2. 구조체 변수 선언과 초기화구조체 변수를 선언하고 초기화하는 방법은 다음과 같습니다:Person person1;person1.name = "John";person1.age = 30;person1.height = 5.9;Person person2 = {"Jane", 25, 5.5}; 3. 구조체와 포인터구조체 포인터를 사용하면 구조체의 .. 2024. 8. 1.
[C++ 성능 최적화 및 고급 테크닉] Day 11: 표현식 템플릿 (Expression Templates) 표현식 템플릿이란?표현식 템플릿(Expression Templates)은 C++ 템플릿 메타프로그래밍 기법으로, 수식의 계산을 최적화하여 성능을 향상시키는 방법입니다. 주로 수치 연산 라이브러리에서 사용되며, 연산 중간 결과를 저장하지 않고 최적화된 코드로 변환합니다. 표현식 템플릿의 작동 방식표현식 템플릿은 연산자 오버로딩과 템플릿을 사용하여 연산의 중간 결과를 표현식 트리로 변환합니다. 그런 다음 이 트리를 평가하여 최적화된 코드를 생성합니다. 기본 예제간단한 벡터 클래스를 사용하여 표현식 템플릿을 구현해보겠습니다. 1. 벡터 클래스 정의먼저 기본 벡터 클래스를 정의합니다.#include #include class Vector {public: std::vector data; Vector(s.. 2024. 8. 1.
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 11: 디자인 패턴 심화 - 옵저버 패턴 (Observer Pattern) 옵저버 패턴 (Observer Pattern)옵저버 패턴은 행위 패턴 중 하나로, 객체 간의 일대다 관계를 정의합니다. 한 객체의 상태 변화가 다른 객체들에 자동으로 통지될 수 있도록 합니다. 이를 통해 객체들 간의 느슨한 결합을 유지하면서도 이벤트 기반 프로그래밍을 할 수 있습니다. 옵저버 패턴의 특징일대다 관계: 하나의 주체(Subject) 객체가 다수의 옵저버(Observer) 객체에 상태 변화를 통지합니다.느슨한 결합: 주체와 옵저버는 서로 독립적으로 동작하며, 주체는 옵저버가 누구인지 알 필요가 없습니다.이벤트 기반: 상태 변화가 발생할 때 자동으로 통지가 이루어집니다.옵저버 패턴의 구조Subject (주체): 상태를 가지고 있으며, 상태 변화 시 옵저버에게 통지합니다.Observer (옵저버).. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 11: RESTful API 설계와 구현 RESTful API 소개REST(Representational State Transfer)는 웹 서비스 설계 아키텍처입니다. RESTful API는 REST 아키텍처 스타일을 따르는 API입니다. RESTful API는 클라이언트와 서버 간의 통신을 단순화하고 표준화하는 데 사용됩니다. HTTP를 기반으로 하며, URL을 통해 리소스를 식별하고, HTTP 메서드를 사용하여 리소스를 조작합니다.RESTful API의 주요 특징리소스 기반: 모든 것은 리소스로 취급되며, 각 리소스는 고유한 URL로 식별됩니다.HTTP 메서드 사용: RESTful API는 HTTP 메서드를 사용하여 리소스를 조작합니다.GET: 리소스 조회POST: 리소스 생성PUT: 리소스 전체 수정PATCH: 리소스 일부 수정DELETE.. 2024. 8. 1.
[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.
반응형