전체 글 159

[알고리즘] 트리6 - 히프 트리(Heap)

ㅊ2023.11.14 - [알고리즘] - [알고리즘] 트리 5 - 균형 이진 탐색 트리(AVL) [알고리즘] 트리5 - 균형 이진 탐색 트리(AVL) 목차 2023.11.13 - [알고리즘] - [알고리즘] 트리 4 - 이진 탐색 트리 [알고리즘] 트리4 - 이진 탐색 트리 이진 탐색 트리 이진트리는 트리를 효율적으로 구현하고 관리하기 위해서 일정한 조건으로 정 sun-dori.tistory.com 목차 히프 히프는 완전 이진 트리에 있는 노드 중에서 키값이 가장 큰 노드나 키잡이 가장 작은 노드를 찾을 때 필요한 자료구조이다. 키값이 가장 큰 노드를 찾기 위한 히프를 최대 히프(Max Heap), 키값이 가장 작은 노드를 찾기 위한 히프를 최소 히프(Min Heap)라 한다. 히프의 개념 최대 히프 최..

알고리즘 2023.11.20

임베디드시스템 릴레이 부저 제어 테스트

릴레이 부저 제어 테스트 LED_CON과 SET_CON은 각각 0x8000 및 0x8100의 주소를 할당받고, 부호 없는 문자형 포인터로 취급하며, 이러한 주소는 외부 I/O를 제어하는 데 사용한다. #define LED_CON *((unsigned char *)0x8000) #define SET_CON *((unsigned char *)0x8100) Buzz, Relay1, Relay2는 특정 핀 번호에 할당하며, 그다음의 라인에서는 이러한 핀을 켜고 끄기 위한 비트 마스크를 정의한다. #define Buzz 6 #define Relay1 0 #define Relay2 1 #define Relay1_on 1

임베디드시스템 포토센서를 활용한 외부 인터럽트 제어

외부 인터럽트 미리 배정되어 있는 처리기의 핀으로 입력되는 트리거 신호에 의해 발생하는 인터럽트이다. 프로그램에 의해 발생하는 타이머/카운터 인터럽트와 비교하면 외부 인터럽트는 하드웨어적인 인터럽트라 할 수 있고 주변 장치들의 요청에 가장 신속하게 대처할 수 있는 인터럽트의 대응 방식이다. 글쓴이가 공부할 때 사용하는 ATmega128 보드 에서는 ... 외부 인터럽트 관련 레지스터 외부 인터럽트 마스크 레지스터 : EIMSK("External Interrupt Mask Register") EIMSK 레지스터는 외부 인터럽트를 사용하거나 무시할지를 제어하는 데 사용하는데, 외부 인터럽트는 외부에서 발생하는 신호나 이벤트에 응답하여 마이크로컨트롤러의 실행을 중단하고 특정한 인터럽트 서비스 루틴(ISR)을 ..

C/C++ OpenGl을 이용한 간단한 태양계 구축 프로젝트(2)

2023.11.08 - [C\C++/OpenGL] - C/C++ OpenGl을 이용한 간단한 태양계 구축 프로젝트(1) C/C++ OpenGl을 이용한 간단한 태양계 구축 프로젝트(1) Windows MFC (Microsoft Foundation Classes)를 사용하여 OpenGL을 초기화하고 간단한 2D 그래픽을 렌더링 하는 뷰 클래스를 사용하여 간단한 태양계 구축하기. 이번에는 OpenGL을 사용하여 태양계 모델링을 구 sun-dori.tistory.com 저번 글에 이어서 이번에는 조명 효과를 넣어보고자 한다. OpenGL 조명 효과 조명의 종류 주변광 (Ambient Light) : 모든 방향에서 나타나는 조명으로 모든 물체에 균일하게 영향을 미친다. 주변 어디에서나 나오는 일반적인 빛을 말하..

C\C++/OpenGL 2023.11.18

[알고리즘] 트리5 - 균형 이진 탐색 트리(AVL)

목차 2023.11.13 - [알고리즘] - [알고리즘] 트리 4 - 이진 탐색 트리 [알고리즘] 트리4 - 이진 탐색 트리 이진 탐색 트리 이진트리는 트리를 효율적으로 구현하고 관리하기 위해서 일정한 조건으로 정의한 것이며, 이진트리를 탐색용 자료구조로 사용하기 위해 원소 크기에 따라 노드 위치를 정해둔 sun-dori.tistory.com 균형 이진 탐색 트리 이진 탐색 트리에서 좌우 균형이 올바르다면 탐색을 할 때 성능이 좋고 이 성능은 탐색 트리의 높이와 밀접한 상관관계를 가진다. 높이가 3인 (a) 트리에서는 17을 탐색하려면 루트 노드 8에서 비교 연산을 4번을 수행해야 하지만... 높이가 5인 (b) 트리에서는 17을 탐색하려면 (a) 트리보다 더 많은 비교 연산이 필요하다.. n개의 노드를..

알고리즘 2023.11.14

[알고리즘] 트리4 - 이진 탐색 트리

이진 탐색 트리 이진트리는 트리를 효율적으로 구현하고 관리하기 위해서 일정한 조건으로 정의한 것이며, 이진트리를 탐색용 자료구조로 사용하기 위해 원소 크기에 따라 노드 위치를 정해둔 것이다. 이진트리에서는 내가 필요한 자료(정보)를 찾을 때 KEY 값을 이용하여 자료를 찾는데 이 KEY 값은 자료를 식별할 수 있는 유일한 값이다. (ex: 대학생의 학번 etc..) 이진 탐색 트리의 정의 모든 원소는 서로 다른 유일한 키를 갖는다. -> 데이터베이스에서의 기본 키(Primary Key) 왼쪽 서브 트리에 있는 원소들의 키는 그 루트의 키보다 작다. 오른쪽 서브 트리에 있는 원소들의 키는 그 루트의 키보다 크다. 왼쪽 서브 트리와 오른쪽 서브 트리 둘 다 이진 탐색 트리이다. ⭐모든 연산에는 탐색 연산이 ..

알고리즘 2023.11.13

[알고리즘] 트리3 - 스레드 이진 트리

목차 스레드 이진트리(Thread Binary Tree) 이전 글 이진 트리의 순회에서는 부모 노드와 자식 노드의 이진트리 기본 구조에서 각 레벨에서 순환적으로 반복되어 전체 트리가 구성되는 구조이다 보니 각 노드에서의 순회 연산을 재귀호출을 이용하여 순환적으로 반복하여 전체 트리에 대한 순회를 처리하였다. 이러한 방식은 함수 구현을 함에 있어서 간단하지만, 수행의 성능 측면에서는 시스템적으로 스택을 사용하여 호출과 복귀를 관리해야하고 이진트리의 하위 레벨로 내려갈수록 재귀호출의 깊이가 깊어지므로(스택에 쌓이는 양이 많아짐) 매우 비효율적일 수 있다. 따라서 이러한 문제점들을 생각하여 재귀호출이 없어도 순회가 가능토록한 것이 스레드 이진트리이다. 스레드 이진트리의 특징 스레드 (Thread) 스레드 이진..

알고리즘 2023.11.13

[알고리즘] 트리2 - 이진 트리의 순회

#1 이진트리의 순회 이진트리의 순회 개념 순회(Traversal)란 모든 원소를 하나라도 빠트리거나 중복하지 않고 처리하는 연산을 의미한다. 리스트, 스택, 큐 등과 같은 선형 자료구조는 원소를 1:1 관계로 구성하기에 순회 연산이 필요가 없지만 이진트리는 1:2의 비선형 계층 구조이기에 현재 노드를 처리한 뒤에 왼쪽 노드, 오른쪽 노드 둘 중 어떤 노드를 처리할지 결정하는 순회 연산이 필요하다. 순회연산 작업 D: 현재 노드를 방문하여 처리. 작업 L: 현재 노드의 왼쪽 서브 트리로 이동. 작업 R: 현재 노드의 오른쪽 서브 트리로 이동. 이 3가지의 작업의 수행 순서에 따라 전위 순회, 중위 순회, 후위 순회로 나눈다. 전위 순회 전위 순회(Preorder Traversal)는 D -> L -> R..

알고리즘 2023.11.10

임베디드시스템 스위치 버튼을 통한 LED 응용

1번 스위치 : 홀수 번째 LED 점등 2번 스위치 : 짝수 번째 LED 점등 3번 스위치 : LED들이 Shift Left 4번 스위치 : LED들이 Shift Right 5번 스위치 : 모든 LED 점등 6번 스위치 : 두개의 LED들이 Shift Left되며 점등 7번 스위치 : 두개의 LED들이 Shift Right되며 점등 8번 스위치 : 크리스마스 트리. /* 날짜 : 2023-10-17 작성자 : 권xx 설명 : 스위치 입력에 따라 LED를 제어하는 프로그램. */ #include #include #define LED_CON *((unsigned char *)0x8000) // LED Control bus void main(void) { unsigned char SW = 0; // 변수 SW..