| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- 그리디
- 다이나믹프로그래밍
- 누적합
- level3
- dp
- kotlin
- Stack
- c++
- 우선순위큐
- 컴퓨터비전
- java
- 이분탐색
- dfs
- JavaScript
- 임베디드
- 프로그래머스
- 백준
- 다이나믹 프로그래밍
- 통신 인터페이스
- 2018 KAKAO BLIND RECRUITMENT
- 동적계획법
- BFS
- level2
- 코틀린
- 컴퓨터 비전
- cpp
- 자바
- 구현
- C
- lv2
- Today
- Total
목록전체 글 (147)
코드를 느껴바라
문제 링크성공 여부(걸린 시간): 성공(38분 40초)아이디어이 문제는 주어진 가수들의 선후 관계를 만족하도록 전체 순서를 정하는 문제로,기본적인 위상 정렬(Topological Sort) 개념을 그대로 적용하는 문제이다.각 PD가 제시한 가수들의 순서는A → B → C 와 같이 앞에 있는 가수가 반드시 뒤에 있는 가수보다 먼저 나와야 한다는 방향 그래프의 간선 정보로 해석할 수 있다.따라서 모든 순서 정보를 간선으로 변환한 뒤,진입 차수(indegree)를 기반으로 하는 Kahn 알고리즘 방식의 위상 정렬을 수행하면 된다.1️. 그래프 구성입력으로 주어지는 한 PD의 순서가3 1 4 3이라면,이는1 → 41 → 34 → 3과 같은 관계를 의미한다.즉, 앞에 등장한 가수는 뒤에 등장한 모든 가수보다 먼저..
개요이번 실습에서는 Infineon AURIX TC275 마이크로컨트롤러의 GTM(Generic Timer Module) TOM을 활용하여 피에조 부저(Piezo Buzzer)의 다양한 음계를 출력하는 '미니 피아노' 시스템을 구현해 보았습니다.외부 인터럽트(ERU)를 사용했던 지난 스톱워치 실습과 달리, 이번에는 메인 루프에서 GPIO 핀의 상태를 지속적으로 읽어들이는 폴링(Polling) 방식을 채택했습니다. 두 개의 하드웨어 버튼(SW1, SW2)을 누르고 있는 동안 각각 '도(C4)'와 '솔(G4)' 음계가 재생되며, 손을 떼면 즉시 소리가 멈추도록 직관적으로 설계했습니다.1. 핵심 설계 전략: 하드웨어 PWM 제어와 Polling 입력 구조이 코드는 하드웨어 타이머(GTM TOM) 기반의 주파수..
개요이번 실습에서는 Infineon AURIX TC275 마이크로컨트롤러와 74HC595 시프트 레지스터를 결합하여 4자리 4FND에 시간을 표시하는 스톱워치 시스템을 구현해 보았습니다.시스템 부팅 후 0000부터 숫자가 순차적으로 증가하며, 두 개의 외부 버튼(SW1, SW2)을 통해 각각 '초기화(Reset)'와 '일시정지(Pause)' 기능을 제어할 수 있도록 설계했습니다. 일시정지 시에는 화면에 "----" 기호가 출력됩니다.1. 핵심 설계 전략: "Flag & Main Loop" 구조와 멀티플렉싱이 코드 역시 인터럽트 핸들러(ISR)에서는 '깃발(Flag)'만 들고, 실제 디스플레이 구동 및 숫자 계산과 같은 무거운 로직은 메인 루프에서 처리하는 방식을 엄격하게 따르고 있습니다.만약 7세그먼트를..
개요이번 실습에서는 Infineon AURIX TC275의 STM(System Timer Module)과 ERU(External Request Unit)를 결합하여, 단순한 자동 신호등을 넘어 사용자가 제어 가능한 신호등 시스템을 구현해 보았습니다.1. 핵심 설계 전략: "Flag & Main Loop" 구조이 코드의 가장 큰 특징은 인터럽트 핸들러에서는 '깃발(Flag)'만 들고, 실제 무거운 로직은 메인 루프에서 처리한다는 점입니다. 이는 시스템 안정성을 높이는 매우 중요한 설계 방식입니다. 그런데 만약 무거운 로직을 핸들러에서 처리하다 보면 어떤 문제가 생길까요?+)인터럽트 지연(Latency)과 응답성 저하임베디드 시스템은 보통 여러 개의 인터럽트를 관리합니다. 만약 낮은 우선순위의 핸들러가 CP..
리눅스 디바이스 드라이버로 GPIO LED 제어하기오늘은 리눅스 커널 레벨에서 하드웨어를 직접 제어하는 Character Device Driver를 작성하고, 유저 응용 프로그램에서 이를 호출해 LED를 켜고 끄는 실습을 진행했습니다.전체 코드는 포스팅 제일 하단에 위치하고 있습니다.!!1. 실습 개요 (What I did)리눅스 시스템(User Space)에서는 하드웨어에 직접 접근할 수 없습니다. 따라서 Kernel Space에서 동작하는 모듈을 만들어 물리 메모리에 접근하고, 유저 공간에서 open, write, read 시스템 콜을 통해 LED를 제어하는 구조를 구현했습니다.타겟 보드: 라즈베리파이 4 (추정: Base Address가 0xFE200000임)제어 핀: GPIO 17번주요 기능:1 ..
라즈베리파이로 7-Segment를 제어해서 버튼을 눌렀을때 0~9 반복 동작하게 하기우선 준비할 데이터 시트는 7-Segment와 라즈베리파이 4 Model B의데이터 시트이다. 우선 각각의 다이오드를 어떨때 켜고 끌지에 대해서만 생각하면 간단하게 구현할 수 있다. 코드부분코드에 대해서 먼저 설명을 하자면 나는 좀 이해하기 쉽고 간단하게 하기 위해각각의 7-Segment의 다이오드 명에 대해서 라즈베리파이 GPIO 핀번호 몇번에 꽂았는지에 대해서 배열로 저장을 해주었다. //up pin_num['g'] = 14; pin_num['f'] = 15; pin_num['a'] = 18; pin_num['b'] = 23; //down pin_num['e'] = 22; ..
I2C (Inter-Integrated Circuit) Communication Interface임베디드 시스템에서 장치 수가 늘어나기 시작하면UART는 금방 한계를 드러낸다.핀은 부족하고, 연결해야 할 장치는 많아진다.이 지점에서 등장하는 것이 I2C 통신 인터페이스다.I2C는 적은 핀 수로 여러 장치를 하나의 버스에 연결할 수 있도록 설계된대표적인 버스 기반 직렬 통신 인터페이스다.I2C란 무엇인가I2C(Inter-Integrated Circuit)I2C는 이름 그대로칩과 칩 사이의 통신을 목적으로 만들어진 인터페이스다.특징은 아주 명확하다.단 두 개의 선여러 장치 연결 가능주소 기반 통신UART처럼 1:1로만 연결하는 방식이 아니라,여러 슬레이브 장치를 하나의 선로에 매달아 쓰는 구조다.두 개의 선..
UART / USART Communication Interface임베디드 시스템에서 가장 먼저 마주치는 통신 방식은 대부분 U(S)ART다.센서 값을 출력하거나, PC와 연결해 로그를 확인하고, 외부 모듈과 간단한 명령을 주고받을 때 거의 항상 등장한다.U(S)ART는 흔히 “UART 통신”이라고 불리지만,정확히 보면 이는 통신 프로토콜이 아니라 통신 인터페이스에 해당한다.이 글에서는 그 관점에서 U(S)ART를 정리한다.U(S)ART란 무엇인가UART는Universal Asynchronous Receiver/Transmitter의 약자로,비동기 방식의 직렬 데이터 송수신을 담당하는 하드웨어 인터페이스다.UART의 역할은 명확하다.병렬 데이터를 직렬 데이터로 변환해 송신하고,수신된 직렬 데이터를 다시 병..
임베디드 시스템은 독립적으로 동작하는 장치가 아니다.센서로부터 데이터를 수집하고, 외부 장치에 명령을 전달하며,다른 마이크로컨트롤러나 모듈과 지속적으로 정보를 교환한다.이러한 장치 간 데이터 교환의 모든 방식을 통틀어임베디드 통신(Embedded Communication)이라 한다.본 포스팅에서는 개별 통신 인터페이스를 다루기 전에,임베디드 통신을 이해하기 위한 기본적인 분류 기준과 핵심 개념을 정리하고자 한다.임베디드 통신의 정의임베디드 통신이란,임베디드 시스템이 정해진 규칙(프로토콜)에 따라다른 하드웨어 장치와 데이터를 송수신하는 모든 과정을 의미한다.일반적인 네트워크 통신과 비교했을 때, 임베디드 통신은 다음과 같은 특징을 가진다.통신 대상은 사람이 아닌 하드웨어 장치데이터 형식과 타이밍이 엄격하게..
문제 링크성공 여부(걸린 시간): 성공(12분 21초)아이디어우선 해당 문제의 코드를 보기전에 무조건 풀고 오시길 강.력.추.천 드립니다. 스포방지">스포방지 우선 문제에서 제시한 이동 방법은 아래와 같이 2가지이다.1. K칸 점프 (건전지 사용량 K) 2. 이동한 만큼 순간이동 (건전지 사용량 0) 그래서 처음에 떠올린 방법은 BFS를 통해서 각 상태마다 2번 이동이 가능하다면 1번과 2번 방법 모두 시도해서 다음 큐로 넣어주고 그게 아니라면 1번만 시도해서 다음번 위치, 건전지 사용량을 넣어준다.그렇게 목적지인 N까지 도달하는데 드는 최소한의 비용을 구하고자 했다.그런데 충격적이게도 N이 10억이하의 자연수이므로 모든 경우의 수에 대해서 진행을 하면 시간초과가 발생하지 않으면 내 상식이 부정되는 조..
