일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 정렬알고리즘
- Mega2560
- 아두이노 통신
- 코테
- iscancellationrequested
- 아두이노
- S&P500
- STM32CubeIDE
- flag 변수
- 객체지향
- c#
- STM32 개발환경
- C++
- 백준
- Microchip Studio
- SPXL
- STM32 IDE
- NUCLEO-F103RB
- STM32 라인업
- cancellationtoken
- CubeIDE
- STM32
- STL
- Avr
- 정렬
- atmega
- 코딩테스트
- 알고리즘
- GPIO
- sort
- Today
- Total
목록분류 전체보기 (39)
뽕구의 개발일지

Thread 기초에 대해서 이전에 포스팅했습니다.글을 읽다보니, 신입때 쓰레드를 종료시키는데 애먹었던 기억이 났어요. 그리고 필수로 다루어야 할 내용이기도 한 것 같습니다.그리고 참고로 썸네일을 바꾸었어요 좀 더 깔끔한것 같네요 :) 이번에는 쓰레드를 종료시키는 방법에 대해서 포스팅하겠습니다.쓰레드 종료시키기가장 안전한 방법은 쓰레드가 실행하는 메서드를 다 실행하면 자동으로 종료가 됩니다.for, while 등 반복문이 종료 조건이 되어 끝나는 경우return을 만나는 경우별도로 종료를 시킬 필요가 없다면 일 끝나면 알아서 종료되게 냅두는게 가장 좋아요그치만 개발하다보면 분명히 쓰레드를 중지시켜야할 때가 있습니다. 안전한 방법과 불안전한 방법에 대해 알아보겠습니다.불안전한 종료 방법먼저 불안전한 종료 방..

안녕하세요. 이번에는 C#으로 쓰레드 Thread에 대해 알아보도록 하겠습니다.쓰레드 ThreadThread(쓰레드) 는 CPU가 작업을 수행하는 최소 단위의 실행 흐름입니다.운영체제 관점에서 하나의 프로세스는 하나 이상의 쓰레드를 가질 수 있으며, 이들 쓰레드는 같은 메모리 공간을 공유합니다.프로세스(Process): 실행 중인 프로그램 쓰레드(Thread): 그 프로그램 내부에서 실제로 일을 처리하는 실행 흐름즉, 한 프로그램(프로세스) 안에서도 여러 개의 작업을 동시에 처리하고 싶을 때, 그걸 가능하게 해주는 게 Thread입니다. 쓰레드 생성 방법 1C#에서는 System.Threading.Thread 클래스를 통해 간단히 스레드를 만들 수 있습니다. 기본 예시 코드를 작성해봤는데요.코드 설명은 ..
백준 #10817 세 수https://www.acmicpc.net/problem/10817 세 정수 A,B,C 가 주어지고 정렬하여 가운데 값을 출력하면 되는 문제입니다. STL sort 함수를 이용해 금방 풀었습니다. 구현#include #include using namespace std;int Number[3];int main() { std::cin >> Number[0] >> Number[1] >> Number[2]; sort(Number, Number + 3); std::cout 마치며정렬 알고리즘들이 내부 로직이 어떻게 구현되었는지 앞전에 공부 해보았기 때문에, 이제 STL을 사용하여 시간 단축하는데 더 초점을 맞춰야겠습니다. sort 함수 외에도 여러 STL 함수들을 공부해서 문제에 적용..
삽입 정렬선택, 버블, 삽입 정렬 다음으로 세번째 순서, 삽입 정렬입니다.삽입 정렬은 아래와 같이 이해하였습니다. "원소를 이전 순서에 이미 정렬된 원소들과 비교해 작은 수가 되는 위치에 넣는다." 최악의 경우 O(N^2) 시간 복잡도를 갖지만 이전 인덱스의 수들이 정렬이 되어있다는 가정 때문에 모든 원소를 비교하지 않아 정렬 중 성능이 좋은편이라고 합니다. 나동빈 님의 알고리즘 강좌를 보고 구현해보았습니다.구현#include #include using namespace std;int main() { int j, temp; int arr[10] = { 1,10,5,8,7,6,4,3,2,9 }; //비교 횟수 == 원소 갯수 -1 == i = 9 for (int i = 0; i arr[j + 1]) ..
백준 #2751 수 정렬하기https://www.acmicpc.net/problem/2751 버블 정렬 공부하면서 이번 문제는 버블정렬로 풀어야지! 했는데 계속 시간 초과가 났습니다. 분명히 2750 문제랑 똑같았다고 생각했는데 원인을 찾아보니 입력 수가 1,000,000 으로 늘어난 걸 캐치를 못했어요 ㅠㅠ그래서 오래 걸리는 버블이랑 선택 정렬로 풀어도 #2750은 풀렸는데 #2751은 안풀렸습니다. 그래서 이번에는 C++ STL 함수 sort()를 사용했습니다. "algorithm.h" 에 포함되어 있는 함수이니까 #inlcude 해주세요~ Sort() 는 퀵 정렬을 기반으로 힙 정렬과 삽입 정렬이 혼합된 방식으로 구현되어 있다고 하네요.따라서 O(N^2) 시간 복잡도를 갖는 퀵 정렬과 다르게 O(..
백준 #2750 수 정렬하기https://www.acmicpc.net/problem/2750 가장 기본인 정렬 알고리즘을 먼저 해보려고 합니다.나동빈 님 알고리즘 유투브 영상을 참고하면서 구현하고 있는데요. 원소와 비교하여 가장 작은 수를 선택해 맨 앞으로 보내는 선택정렬 알고리즘을 사용해보았습니다.저는 선택 정렬 알고리즘은 아래와 같이 이해했습니다. 현재 원소를 모든 원소와 비교하여, 가장 작은 수를 맨 앞으로 보내라. 모든 원소를 다 돌리다는 것은 결국 시간 복잡도가 높다는 뜻이겠네요 때문에, 선택 정렬의 시간 복잡도는 O(N^2) 입니다. /*나동빈 님 유투브에서 추가 이해를 위한 설명 내용입니다.*/예를 들어 10개 원소 1~10이 있을 때 모든 수를 비교하려면 55번의 비교연산을 수행해야 합니다..
백준 #10845 Queue 구현하기https://www.acmicpc.net/problem/10845 안녕하세요!드디어 미루고 미루던 코딩테스트 공부를 시작했습니다! 백준에서 준비하고 있고, 익숙한 C# 레벨로 시작했다가 C++로 넘어왔습니다. C++ 완전 처음하는거라 진짜 하나도 모르겠어요. 하나하나 찾아보면서 하고 있습니다ㅠㅠ 특히나 string 다루는게 익숙하지가 않네요. STL 함수를 많이 익숙해져야겠어요. string 비교도 char*로 strcmp()함수를 쓸지 string 자체를 비교할지 고민했었는데, 이정도 레벨에서는 큰 차이 없어보여서string으로 == 으로 비교했습니다. string 비교 시 Compare 함수도 있었는데 == 랑 속도차이 거의 없다는 글을 보아서 편하게 ==로 했습..

SOLID 설계 원칙객체지향을 논할 때 4대 특징 상속, 다형성, 캡슐화, 추상화와 더불어 항상 언급되는 SOLID 설계 원칙입니다.SOLID는 아래 5개의 원칙으로 구성되어 있으며 각 설계 원칙의 영문 앞글자를 따서 S.O.L.I.D로 명명되었습니다. 5가지 원칙영문의미1. 단일 책임 원칙Single Responsibility Principle하나의 클래스는 하나의 책임만 갖는다.2. 개방 폐쇄 원칙 Open/Closed Principle확장에는 개방되어있고, 수정에는 닫혀있어야 한다.3. 리스코프 치환 원칙Liskov's Substitustion Principle파생 클래스가 부모 클래스를 대체할 수 있어야야 한다.4. 인터페이스 분리 원칙Interface Segregation Principle인터페..

HP OMEN OMEN Install Monitor 무한 로딩 문제 아니 갑가지 PC가 엄청 버벅이고 마우스가 움직이지도 않아서 작업관리자 켜보니까 메모리가 끝까지 차서 확인해보니까 메모리가 가득 차더라고요 프로세스 탭 가서 보니까 아래와 같이 HP.OMEN.OMENInstallMonitor 무한 로딩이 진행중이었습니다. 컴퓨터 먹통이라 스마트폰으로 해결법 찾다가 안되어서, 제가 찾은 해결법 공유드려요 해결 방법랜선 뽑는다윈도우 검색으로 "설치된 앱" 검색"OMEN Gaming Hub" 검색저는 이미 지워서 아무것도 뜨지 않는데 OMEN Gaming Hub 를 검색합니다. OMEN Gaming Hub가 충돌나는거라고 합니다. OMEN Gaming Hub이게 검색된다면 삭제해주세요!PC 재시작 및 랜..

EXTI (외부 인터럽트, External Interrupt)이번에는 외부 인터럽트에 대해 알아보고, 간단히 구현해보도록 하겠습니다.MCU는 전원이 인가되면 BootLoader가 플래시 메모리에 올라가 있는 프로그램을 호출해 main.c가 실행되게 됩니다.이후 main함수에 있는 while(1) 무한 반복이 돌게 되죠. 이때, 외부에서 GPIO로 어떤 신호가 입력될 때 어떻게 감지를 해야될까요while에서 계속 상태 읽기? Timer로 주기적으로 상태 읽기? 상황에 따라 선택할 수 있겠지만, while에서 계속 읽는 것은 굉장히 비효율적이고, Timer 기반은 업데이트 주기에서 신호를 놓칠 수 있습니다. 이때 쓰는 방법이 외부 인터럽트, 입력 신호의 Rising, Falling Edge를 감지하여 신호의..