본문 바로가기
728x90
반응형
SMALL

전체 글151

[SWEA 1249] D4 [S/W 문제해결 응용] 4일차 - 보급로(c++) https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com문제 개요N×N 지도의 좌상단에서 우하단까지 가면서 지나간 칸의 깊이 합이 가장 작은 경로를 찾는 문제입니다. 상하좌우로 한 칸씩 움직이고 이동 거리 자체는 비용에 들어가지 않습니다. 출발지와 도착지는 0으로 주어지고 N은 최대 100입니다.최단 거리와 최소 비용처음에 그냥 BFS로 짰다가 틀렸습니다. BFS가 보장하는 건 이동 횟수가 가장 적은 경로지 비용이 가장 싼 경로가 아닙니다. 깊이 9짜리 칸을 뚫는 것보다 두 칸 돌아가는 편이 싼 경우가 얼마든지 .. 2026. 8. 25.
디바이스 트리와 드라이버 바인딩 커널 소스에는 손대지 않고 LED 하나를 붙이려면 DTS에 노드 몇 줄만 넣으면 됩니다. 그런데 그 몇 줄이 어느 경로로 드라이버의 probe()까지 도달하는지가 보이지 않으면, 노드를 다 써놓고도 아무 일이 일어나지 않는 자리에서 멈추게 됩니다. 디바이스 트리 문법부터 커널이 노드를 드라이버에 붙이는 과정까지 정리하고, 마지막에 I2C LED 드라이버 IC인 KTD2027을 붙였던 순서를 옮겨 보겠습니다.용어뜻SoC완전 구동이 가능한 시스템이 한 개의 칩에 집적된 것DTS / DTB하드웨어를 기술한 소스 파일 / 그것을 컴파일한 바이너리FDTFlattened Device Tree. 메모리에 올라간 DTB 형태바인딩트리의 노드와 커널의 드라이버가 짝지어지는 것phandle트리 계층을 가로질러 다른 노드.. 2026. 8. 20.
[SWEA 7091] D6 은기의 아주 큰 그림 (c++) https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com문제 개요H×W 크기의 그림이 N×M 크기의 그림 안에 몇 번 등장하는지 세는 문제입니다. 각 칸은 o와 x 두 글자뿐이고 N과 M은 최대 2,000까지 들어옵니다. 1차원 문자열 검색을 그대로 2차원으로 올린 형태입니다.완전탐색의 비용시작 위치는 (N-H+1)×(M-W+1)개이고 위치마다 H×W칸을 맞춰 봐야 하는데, H와 W가 N, M의 절반쯤일 때 10^12를 넘어갑니다. 라빈-카프는 구간을 정수 하나로 요약해 두고 창을 한 칸 옮길 때마다 앞 글자를 .. 2026. 8. 19.
시리얼 통신(4) I2C I2C(Inter-Integrated Circuit)는 1982년 필립스 반도체가 만든 2선식 버스입니다. 그 무렵 TV 한 대 안에는 튜너와 볼륨, 화면 조정용 IC가 따로 들어 있었고, 이 칩들을 마이크로컨트롤러에 일일이 배선하다 보니 기판이 선으로 뒤덮였습니다. 그래서 클럭선과 데이터선 하나씩만 모두가 공유하고, 어느 칩과 이야기할지는 선이 아니라 주소로 고르는 방식을 만들었습니다.지금은 보드 위에 센서나 EEPROM, RTC를 붙일 때 기본으로 쓰입니다. 라이선스 때문에 TWI(Two-Wire Interface)라는 이름을 쓰는 제조사도 있는데, 동작은 I2C와 같습니다.선 두 가닥으로 디바이스를 여러 개 붙이면서도 바이트마다 ACK로 수신을 확인하고, 타깃이 클럭을 붙잡아 속도를 늦추거나 컨트롤.. 2026. 8. 14.
더 더 쉽게 멜론 플레이리스트 유튜브 뮤직으로 옮기기 with AI(터미널) https://doyun98.tistory.com/152 멜론 플레이리스트 유튜브 뮤직으로 옮기기멜론에 몇 년치 쌓인 플레이리스트를 유튜브 뮤직으로 옮기려고 CLI를 하나 만들었습니다. 곡이 1000개가 넘으니 하나씩 검색해서 담는 건 도저히 못 하겠더군요. 옮기고 나서는 팝송, 드라이브,doyun98.tistory.comhttps://doyun98.tistory.com/153 더 쉽게 멜론 플레이리스트 유튜브 뮤직으로 옮기기 with AIhttps://doyun98.tistory.com/152 멜론 플레이리스트 유튜브 뮤직으로 옮기기멜론에 몇 년치 쌓인 플레이리스트를 유튜브 뮤직으로 옮기려고 CLI를 하나 만들었습니다. 곡이 1000개가 넘으니 하나씩 검색doyun98.tistory.com시간 없으신 .. 2026. 8. 13.
더 쉽게 멜론 플레이리스트 유튜브 뮤직으로 옮기기 with AI(터미널) https://doyun98.tistory.com/152 멜론 플레이리스트 유튜브 뮤직으로 옮기기멜론에 몇 년치 쌓인 플레이리스트를 유튜브 뮤직으로 옮기려고 CLI를 하나 만들었습니다. 곡이 1000개가 넘으니 하나씩 검색해서 담는 건 도저히 못 하겠더군요. 옮기고 나서는 팝송, 드라이브,doyun98.tistory.comhttps://doyun98.tistory.com/154 더 더 쉽게 멜론 플레이리스트 유튜브 뮤직 with AI(터미널)https://doyun98.tistory.com/152 멜론 플레이리스트 유튜브 뮤직으로 옮기기멜론에 몇 년치 쌓인 플레이리스트를 유튜브 뮤직으로 옮기려고 CLI를 하나 만들었습니다. 곡이 1000개가 넘으니 하나씩 검색doyun98.tistory.comhttps:.. 2026. 8. 13.
멜론 플레이리스트 유튜브 뮤직으로 옮기기 멜론에 몇 년치 쌓인 플레이리스트를 유튜브 뮤직으로 옮기려고 CLI를 하나 만들었습니다. 곡이 1000개가 넘으니 하나씩 검색해서 담는 건 도저히 못 하겠더군요. 옮기고 나서는 팝송, 드라이브, 잔잔한 곡으로 나눠 듣고 싶어서 무드 분류도 붙였습니다.github.com/umdoyuun/melon-to-ytmusic GitHub - umdoyuun/melon-to-ytmusicContribute to umdoyuun/melon-to-ytmusic development by creating an account on GitHub.github.com 더 쉬운 방법 (터미널 기반 AI 툴 사용, ex 클로드 코드, 코덱스, 제미나이 CLI)https://doyun98.tistory.com/153 더 쉽게 멜론 플.. 2026. 8. 13.
[SWEA 3135] D5 홍준이의 사전놀이 (c++, JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 문제 개요빈 공책에 단어를 하나씩 적어 나가면서, 중간중간 지금까지 적은 단어 중 특정 문자열로 시작하는 것이 몇 개인지 묻는 문제입니다. P가 1이면 문자열 S를 적고, P가 2면 S로 시작하는 단어의 개수를 답합니다. init, insert, query 세 함수를 채우는 형식입니다.문제 풀이질의마다 공책에 적힌 단어를 전부 훑을 수는 없으니, 접두사를 저장해 두고 바로 꺼내 쓰는 트라이로 풀었습니다.트라이는 문자 하나를 간선으로 삼아 문자열을 경로로 표.. 2026. 8. 12.
JAVA 소켓 채팅 프로그램(1) 자바 Socket으로 콘솔 채팅을 만들어 보겠습니다. 서버 하나에 클라이언트 여러 명이 붙고, 한 명이 친 메시지가 나머지 전원에게 뿌려지는 형태입니다. 접속할 때 닉네임을 정하고 /종료를 치면 나갑니다.완성하면 이렇게 동작합니다.왼쪽이 서버, 오른쪽 위아래가 각각 도윤과 지훈입니다.JDK 21, Windows 11에서 만들었습니다. 외부 라이브러리 없이 java.net과 java.io만 씁니다.소켓과 포트소켓은 두 프로그램이 네트워크로 데이터를 주고받을 때 양쪽 끝에 하나씩 생기는 통로입니다. 자바에서는 두 클래스를 씁니다.클래스역할ServerSocket포트를 잡고 접속을 기다린다. 서버에만 있다Socket실제로 데이터가 오가는 통로. 서버와 클라이언트가 하나씩 가진다 서버 .. 2026. 8. 11.
시리얼 통신(3) RS-422 / RS-485 https://doyun98.tistory.com/147 시리얼 통신 UART라즈베리파이에 GPS 모듈을 붙이거나, MCU 두 개를 서로 통신시킬 때 가장 먼저 쓰게 되는 게 UART입니다. TX와 RX를 크로스로 연결하고 GND를 공통으로 묶은 다음, 양쪽 Baud rate를 9600으로 맞추면 끝입doyun98.tistory.comhttps://doyun98.tistory.com/148 시리얼 통신 RS-232와 Flow Control앞 글에서 UART의 프레임 구조를 살펴봤습니다. 요약하면 이렇습니다.UART는 클럭 선 없이 Start/Stop bit로 프레임의 경계를 표시한다.양쪽 Baud rate만 맞으면 통신이 성립한다.그런데 실제로 장비를doyun98.tistory.com 공장에서 100m.. 2026. 8. 6.
시리얼 통신(2) RS-232와 Flow Control 앞 글에서 UART의 프레임 구조를 살펴봤습니다. 요약하면 이렇습니다. 시리얼 통신 UART라즈베리파이에 GPS 모듈을 붙이거나, MCU 두 개를 서로 통신시킬 때 가장 먼저 쓰게 되는 게 UART입니다. TX와 RX를 크로스로 연결하고 GND를 공통으로 묶은 다음, 양쪽 Baud rate를 9600으로 맞추면 끝입doyun98.tistory.com UART는 클럭 선 없이 Start/Stop bit로 프레임의 경계를 표시한다.양쪽 Baud rate만 맞으면 통신이 성립한다. 그런데 실제로 장비를 붙여보면 Baud rate가 정확히 같은데도 데이터가 유실되는 경우가 있습니다. 로그 몇 줄이 통째로 사라지거나, 대용량 전송 중에만 앞부분이 깨지는 식입니다. 이번 글에서는 UART 신호를 밖으로 내보내는 .. 2026. 8. 6.
시리얼 통신(1) UART 라즈베리파이에 GPS 모듈을 붙이거나, MCU 두 개를 서로 통신시킬 때 가장 먼저 쓰게 되는 게 UART입니다. TX와 RX를 크로스로 연결하고 GND를 공통으로 묶은 다음, 양쪽 Baud rate를 9600으로 맞추면 끝입니다. 그런데 여기엔 이상한 점이 있습니다. 클럭 선이 없습니다. 클럭이 없다는 건 "지금 이 순간의 전압이 몇 번째 비트인지" 알려주는 기준이 없다는 뜻입니다. 기준도 없이 어떻게 양쪽이 같은 값을 읽을 수 있을까요? 이번 글에서는 이 질문을 축으로 UART의 프레임 구조를 살펴보고, 마지막에 오실로스코프로 실제 파형까지 확인해보겠습니다.미리 알아둘 용어용어의미MCUMicro Controller Unit. 전자기기에 탑재되어 프로그래밍으로 기기를 제어하는 부품TTLTransist.. 2026. 8. 6.
728x90
반응형
LIST