728x90
반응형

전체 글 89

[알고리즘] 소수구하기 - 에라토스테네스의 체 / C++

for문으로 구할 수 있지만, 시간복잡도면에서 효율성이 매우 떨어진다. 대안으로 에라토스테네스의 체를 이용하여 알고리즘을 짜면 훨씬더 빠른 속도로 소수를 구할 수 있다. 에라토스테네스의 체 알고리즘 1 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 3 자기 자신을 제외한 2의 배수를 모두 지운다. 4 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색) 5 자기 자신을 제외한 3의 배수를 모두 지운다. 6 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색) 7 자기 자신을 제외한 5의 배수를 모두 지운다. 8 남아있는 수 가운데 7은 소수이므로 오른쪽에 7을..

알고리즘 2022.05.10

[GUI] Qt + SenseHat : 센스햇 조명등 GUI 어플리케이션 만들기

개발환경 - 하드웨어 : 라즈베리파이, 센스햇 - GUI 라이브러리 : PySide2 (라즈베리파이), PySide6 (윈도우) - IDE : Thony Python IDE (라즈베리파이), Pycharm + QtDesigner (윈도우) - VNC Viewer 요구사항 센스햇 각각의 LED를 제어하고, LED의 색깔을 R/G/B로 나누어 조절할 수 있도록 제작 개발과정 1. 윈도우 -> 라즈베리파이 윈도우에서 ui를 만들고 py 파일로 ui convert(uic)를 하고, 라즈베리파이에 전달해서 py파일을 수정 & 추가하여 개발하였다. 처음부터 라즈베리파이에서 진행하고자 했지만, 해당 라즈베리파이에 PySide2 까지만 릴리즈 되었고 uic 컴파일러가 다운되지 않았기 때문에 불가피하게 윈도우에서 GUI..

임베디드 2022.05.05

[백준] 1463번: 1로 만들기 / C++

풀이 문제 : 백준 1463번 : 1로 만들기 풀이 언어 : C++ 알고리즘 : DP 문제링크 : https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 요약 접근 방식 가능한 연산이 세가지 뿐이니까 세가지 연산을 모두 해보고 횟수가 가장 적은 것을 누적하며 구하고자 하는 값까지 찾아올라가는 방식으로, dp 알고리즘을 사용했다. 코드 #include #include using namespace std; int dp[1000000]; int main() { dp[1] = 0; dp[2] = 1; dp[3] = 1; int n; cin >> n; for (int ..

알고리즘/백준 2022.05.04

[GUI] Qt와 QtDesingner 소개

Qt - C++ 기반 GUI Application 개발시 가장 널리 쓰이는 프레임 워크 - 다른 플랫폼으로 포팅이 자유로움 (One framework. One codebase. Any platform. / Write once, compile anywhere) - 윈도우, 리눅스, 맥, 안드로이드, VxWorks, Tizen 지원 - 네트워크, 그래픽, DB, OpenGL 등 쉬운 API 지원 Qt 오픈소스 라이센스 - GPL : 모든 소스코드를 공개해야한다, 비상업용으로 사용함 - LGPL : GPL 에서 특정 모듈을 쓰지 않으면 LGPL로 가능하다. 상업용으로 사용 QtDesigner - 일반적인 UI Designer이고, LGPL이다. - Designer로 위젯을 꾸며 위젯파일이나 .ui 파일을 만든..

임베디드 2022.05.03

[펌웨어] CubeIDE로 내부/외부 LED 켜기

개발환경 보드 : Nucleo-F103RB CPU 칩셋 : STM32F103RB CPU 설계 : ARM Cortex-M3 IDE : STM32CubeIDE shematic 회로도 https://www.st.com/en/evaluation-tools/nucleo-f103rb.html#cad-resources NUCLEO-F103RB - STMicroelectronics NUCLEO-F103RB - STM32 Nucleo-64 development board with STM32F103RB MCU, supports Arduino and ST morpho connectivity, NUCLEO-F103RB, STMicroelectronics www.st.com 여기서 schematic을 다운받아보면 내장 장치가 ..

임베디드 2022.05.02

[백준] 2724번: 기찍 N - 시간초과 / C++

풀이 문제 : 백준 9095번 : 1,2,3 더하기 풀이 언어 : C++ 문제링크 : https://www.acmicpc.net/problem/2742 2742번: 기찍 N 자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 요약 문제는 겁나 쉽다. 시간초과 겁나 쉬운 문제가 시간초과가 났다.. 시간초과난 코드는 다음과 같다 #include #include using namespace std; int main() { int x; cin >> x; for (int i = x; i > 0; i--) { cout x; for (int i = x; i > 0; i--) { cout

알고리즘/백준 2022.05.01

[리눅스] 랜덤함수 rand(), srand(), time()

rand 함수 rand(); // 정수형 랜던값이 리턴된다 rand() % 5; // 0~4 사이 랜덤값이 생성된다 rand() % 5 + 3; // 3~7 사이 랜덤값이 생성된다. 사실 이 랜덤함수도 사람이 만든 것이기 때문에 나오는 값이 항상 동일하다. 랜덤 순열의 순서가 고정되어있기 때문에, 모든 사람한테 동일한 결과값이 나온다. 하지만 우리는 이런 랜덤값을 원하는 것이 아니다. srand 함수 srand(랜덤순열ID); int 형 매개변수 번째 순열로 랜덤값이 만들어진다. srand 없이 rand 함수만 쓸 경우에 srand의 첫번째 순열로 적용된다. 이것을 이용해서 랜덤순열ID 값 안에 시간값을 넣으면 1초당 다른 랜덤값으로, 앱 실행시마다 다른 랜덤값이 출력될 수 있다. srand(time(N..

임베디드 2022.04.30

[리눅스] 시그널 신호 보내기, WDT(Watchdog Timer)

시그널 (Signal) 이란? 특정 이벤트가 발생했을때 신호를 보내서 알려준다. kill -l 명령어를 통해 시그널 종류를 파악할 수 있다. 인터럽트 (Interrupt) 란? CPU 동작중 하던일을 멈추고 처리하도록 하는 것이다. 즉, 인터럽트 발생시 예약된 함수가 동작한다. (콜백 함수랑 비슷) ISR (Interrupt Service Routine) 인터럽트 핸들러라고도 불리며, 인터럽트 발생시 호출되는 코드이다. Signal API 사용 사용자 정의 Signal 을 만들어서 다음 명령어를 실행시키면 해당 시그널이 동작한다. killall -사용자정의시그널 프로세스이름 코드 내에서도 다음 코드로 시그널을 실행 시킬 수 있다. kill(프로세스ID, 사용자정의시그널) 코드 작성 실행결과 WDT (Wa..

임베디드 2022.04.29

[라즈베리파이] 출입 인증 시스템 제작

개요 1. 초음파 센서로 접근을 확인하여 가까이 왔을 때 초록색 LED가 켜지고, RFID 를 사용할 수 있다. 2. 출입 인증 성공시, 서보모터로 문이 열리고 부저를 통해 출근 환영 음악이 나온다. 그후 문이 닫힌다. 3. 출입 실패시, 부저에서 간단한 경고음과 빨간색 LED가 켜지고, 3회 연속 실패시, 응급 경고음이 길게 울린다. 이때, 출입 성공을 한번 하면 실패 횟수가 초기화 된다. 4. FND로 출입한 사람 수를 출력해준다. 회로구성 준비물 : 라즈베리파이, 초음파센서, FND 7-Segment, RFID, 빨간색과 초록색 LED, Buzzer, 서보모터 코드 from gpiozero import DistanceSensor,LED,AngularServo,TonalBuzzer from mfrc5..

임베디드 2022.04.28

[라즈베리파이] 초음파 센서를 이용한 방문자수 구하기

개요 초음파 센서로 손님이 지나갔는지 감지하여 FND로 횟수를 표시해준다. 회로구성 준비물 : 초음파센서, FND, 라즈베리파이 코드 from gpiozero import DistanceSensor,LED from time import sleep trig = 20 echo =21 sensor = DistanceSensor(echo,trig) a=LED(5) b=LED(6) c=LED(13) d=LED(19) e=LED(26) f=LED(16) g=LED(8) dp=LED(7) num=[ [a,b,c,d,e,f], [b,c], [a,b,g,e,d], [a,b,g,c,d], [f,g,b,c], [a,f,g,c,d], [a,f,g,e,c,d], [f,a,b,c], [a,b,c,d,e,f,g], [a,b,c,d..

임베디드 2022.04.27
728x90
반응형