728x90
반응형

전체 글 1006

퀵 정렬(Quick Sort) 및 병합 정렬(Merge Sort)

퀵 정렬(Quick Sort) 및 병합 정렬(Merge Sort)퀵 정렬과 병합 정렬은 둘 다 "분할 정복(Divide and Conquer)" 전략을 사용하는 효율적인 정렬 알고리즘입니다. 이 글에서는 퀵 정렬과 병합 정렬의 원리와 구현 방법을 Java와 C로 함께 설명합니다.퀵 정렬 (Quick Sort)퀵 정렬은 주어진 배열을 기준 값(pivot)을 기준으로 두 부분으로 나누고, 각각의 부분 배열을 재귀적으로 정렬하는 방법을 사용합니다. 시간 복잡도는 평균적으로 $O(n \log n)$ 이지만, 최악의 경우 $O(n^2)$가 될 수 있습니다. 주로 "in-place"로 정렬이 이루어지기 때문에 메모리 사용이 효율적입니다.퀵 정렬의 원리배열에서 기준 값을 선택합니다 (일반적으로 첫 번째나 마지막 요소..

Bash Shell Script 변수와 사용자 입력

Bash Shell Script 변수와 사용자 입력Linux Bash Shell 스크립트에서 변수와 사용자 입력은 스크립트의 유연성과 상호작용을 높이는 데 중요한 역할을 합니다. 이번 포스팅에서는 변수 선언 및 사용 방법과 사용자 입력을 처리하는 방법을 예제와 함께 알아보겠습니다.변수 선언과 사용변수 선언Bash에서는 변수를 선언할 때 특별한 키워드가 필요하지 않습니다. 변수 이름과 값 사이에 공백을 넣지 않는 것이 중요합니다.# 변수 선언variable_name="Hello, World!"# 변수 출력echo $variable_name변수 이름 규칙변수 이름을 선언할 때 다음 규칙을 따라야 합니다:변수 이름은 문자, 숫자, 밑줄(_)로만 구성됩니다.변수 이름은 숫자로 시작할 수 없습니다.대소문자를 구분..

재귀 [ Recursion ] 개념 및 예제

재귀 ( Recursion ) 개념 및 예제재귀(Recursion)는 함수가 자기 자신을 호출하는 프로그래밍 기법을 의미합니다. 이 기법은 문제를 더 작은 하위 문제로 나누어 풀어나갈 때 유용하게 사용할 수 있습니다. 재귀는 코드의 간결함을 제공하지만, 올바르게 사용하지 않으면 스택 오버플로우와 같은 문제가 발생할 수 있습니다. 오늘은 재귀의 개념과 몇 가지 예제를 Java와 C 언어로 설명해 보겠습니다.재귀의 개념재귀 함수는 자기 자신을 호출하여 문제를 해결하는 방법입니다. 보통 재귀를 사용할 때는 두 가지 주요 구성 요소가 있습니다:기본 사례(Base Case): 함수가 더 이상 자신을 호출하지 않고 멈추게 하는 조건입니다. 이 조건이 없으면 함수는 무한 루프에 빠져 결국 스택 오버플로우가 발생합니다..

FreeRTOS 실전 예제

FreeRTOS 실전 예제FreeRTOS는 실시간 운영체제(RTOS)로서, 임베디드 시스템 개발자들에게 효율적인 태스크 관리와 자원 제어를 제공합니다. 이번 포스팅에서는 FreeRTOS를 활용한 간단한 IoT 프로젝트를 구현해보겠습니다. 프로젝트는 온도 및 습도 센서 데이터 수집 및 전송, OLED 디스플레이 제어, 태스크 및 자원 관리 최적화를 중심으로 구성됩니다.프로젝트 목표온도 및 습도 센서 데이터 수집 및 전송: 센서를 통해 데이터를 읽고 이를 UART 또는 BLE를 통해 전송합니다.OLED 디스플레이 제어: 수집된 데이터를 OLED 디스플레이에 출력합니다.태스크 및 자원 관리 최적화: FreeRTOS의 태스크 우선순위, 큐, 세마포어 등을 활용해 시스템 성능을 최적화합니다.프로젝트 준비물MCU:..

FreeRTOS 2025.01.18

FreeRTOS와 CMSIS-RTOS v1 비교 및 활용 방법

FreeRTOS와 CMSIS-RTOS v1 비교 및 활용 방법FreeRTOS는 전 세계적으로 널리 사용되는 실시간 운영 체제(RTOS)입니다. CMSIS-RTOS v1는 ARM에서 제공하는 추상화 레이어로, 다양한 RTOS에서 공통적으로 사용할 수 있는 API를 제공합니다. 이 글에서는 CMSIS-RTOS v1와 FreeRTOS의 확장 기능을 비교하고, FreeRTOS API 사용법 및 CMSIS v2와의 비교와 마이그레이션 전략을 소개하겠습니다.1. CMSIS-RTOS v1와 FreeRTOS 확장 기능CMSIS-RTOS v1의 주요 특징일관된 API 제공: 다양한 RTOS에서 동일한 API로 코드를 작성할 수 있도록 설계되었습니다.ARM 에코시스템 최적화: Cortex-M 기반의 임베디드 시스템 개발을..

FreeRTOS 2025.01.18

정렬 알고리즘 - 버블 정렬, 선택 정렬, 삽입 정렬

정렬 알고리즘 - 버블 정렬, 선택 정렬, 삽입 정렬정렬 알고리즘은 데이터를 정렬하는 가장 기초적인 알고리즘 중 하나로, 프로그래밍 입문자부터 고급 개발자까지 모두에게 중요한 주제입니다. 오늘은 대표적인 세 가지 정렬 알고리즘인 버블 정렬, 선택 정렬, 삽입 정렬을 살펴보고 각 알고리즘의 Java와 C 예제를 함께 제공하겠습니다.1. 버블 정렬 (Bubble Sort)버블 정렬은 두 인접한 원소를 비교하여 정렬하는 방식으로, 가장 큰 원소가 배열의 끝으로 이동하는 것을 반복합니다. 이름처럼 거품이 위로 올라가는 것과 유사한 방식으로 작동합니다.알고리즘 설명인접한 두 원소를 비교하여 정렬되지 않은 경우 위치를 바꿉니다.각 패스를 반복할 때마다 가장 큰 원소가 배열의 끝으로 이동합니다.배열이 정렬될 때까지 ..

Bash Shell Script 표준 입력/출력 및 리다이렉션

Bash Shell Script 표준 입력/출력 및 리다이렉션Linux Bash에서 Shell Script를 작성할 때 기본 명령어와 표준 입력/출력, 리다이렉션은 필수적으로 알아야 할 중요한 개념입니다. 이번 포스팅에서는 표준 입력/출력과 이를 활용한 리다이렉션(>, >>, , |)에 대해 설명하고, 예제를 통해 이해를 돕겠습니다.표준 입력/출력 기본 개념Linux 시스템에서는 프로세스가 데이터를 주고받는 데 사용되는 세 가지 표준 스트림이 있습니다.표준 입력 (Standard Input, stdin)기본 파일 디스크립터 번호: 0사용자 또는 파일로부터 데이터를 읽어들이는 스트림입니다.표준 출력 (Standard Output, stdout)기본 파일 디스크립터 번호: 1프로세스가 처리한 데이터를 화면에..

FreeRTOS 디버깅 및 문제 해결

FreeRTOS 디버깅 및 문제 해결FreeRTOS를 활용한 프로젝트를 진행하다 보면 디버깅과 문제 해결이 필수적입니다. 이 글에서는 FreeRTOS 디버깅에 필요한 도구와 기법, 주요 문제와 해결 방법을 정리하였습니다. CMSIS v1을 기반으로 디버깅을 진행할 때 특히 유용한 정보를 다룹니다.디버깅 도구 및 주요 기법1. 태스크 상태 모니터링FreeRTOS에서는 태스크의 상태를 모니터링하여 디버깅 정보를 얻을 수 있습니다. 주요 상태는 다음과 같습니다:Running: 현재 CPU에서 실행 중인 태스크.Ready: 실행 대기 상태.Blocked: 이벤트나 시간 대기 중인 상태.Suspended: 실행이 중단된 상태.예제 코드: 태스크 상태 출력#include "FreeRTOS.h"#include "ta..

FreeRTOS 2025.01.18

해시 테이블[ Hash Table ] 및 해싱 [ Hashing ]

해시 테이블( Hash Table ) 및 해싱 ( Hashing )해시 테이블은 효율적으로 데이터를 저장하고 검색하는 자료 구조입니다. 해싱은 데이터를 해시 함수를 사용해 특정 위치에 매핑하여 저장하는 기법을 말합니다. 이 포스팅에서는 해시 테이블의 기본 개념과 해싱 방법, 그리고 Java와 C로 해시 테이블을 구현하는 방법을 설명합니다.1. 해시 테이블이란?해시 테이블(Hash Table)은 키-값 쌍을 저장하는 자료 구조로, 데이터를 빠르게 검색할 수 있도록 설계되었습니다. 키 값을 해시 함수(Hash Function)에 넣어 해시 값을 생성하고, 이 값을 인덱스로 사용하여 배열 형태의 메모리에 데이터를 저장합니다. 이러한 방식 덕분에 해시 테이블은 평균적으로 O(1)의 시간 복잡도로 데이터를 삽입하..

Bash Shell Script 기본 출력 명령어 [ echo, printf ]

Bash Shell Script 기본 출력 명령어 (echo, printf)Linux Bash Shell Script에서는 출력 명령어를 사용하여 화면에 정보를 표시하거나 파일에 데이터를 기록할 수 있습니다. 이번 포스팅에서는 가장 기본적인 출력 명령어인 echo와 printf에 대해 알아보고, 각 명령어의 사용법과 활용 예제를 함께 살펴보겠습니다.1. echo 명령어echo란?echo는 간단한 문자열 출력 명령어로, Bash에서 가장 기본적으로 사용됩니다. 일반적으로 화면에 텍스트를 출력하거나, 스크립트에서 정보를 사용자에게 전달할 때 사용됩니다.사용법echo [옵션] [출력할 문자열]주요 옵션-n: 출력 후에 줄 바꿈을 하지 않음-e: 백슬래시() 문자를 해석하여 특수 문자를 처리--help: 사용법..

반응형