Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

Tech83

바이트배열을 이용한 에라토스테네스의 체와 그 업그레이드 버전 바이트 배열을 이용한 에라토스테네스의 체가 가장 빠르다는 실험을 했는데 다른 방법을 찾았다.바이트 배열에 홀수만 저장하는 것이다.메모리를 반만 쓸 수 있다.그리고 온라인 저지 상에서는 더 빨랐다.실제로는 좀 더 느리지만 근소한 차이를 보였다.메모리까지 종합적으로 보면 더 우수하다고 할 수 있다.그리고 내가 살짝 튠을 해 보니 조금 더 빠르게 할 수 있었다.import timeimport mathimport matplotlib.pyplot as pltdef sieve_bytearray(n): """ # bytearray를 활용한 에라토스테네스의 체 # 메모리와 연산을 최적화하기 위해 bytearray 사용 """ if n n: # n보다 큰 경우 제외 .. 2025. 3. 1.
에라스토테네스의 체 추가실험(로컬에서 실험) import timeimport arrayimport mathimport matplotlib.pyplot as pltimport numpy as npdef sieve_segmented(n): """ # 세그먼트 체 (Segmented Sieve) # 메모리 사용량과 캐시 효율을 높이기 위해 세그먼트 단위로 처리 """ if n 2: prime.add(3) if n > 1: prime.add(2) for i in range(5, LIM, 6): if i in prime: prime -= RSET(i * i, MAX, i * 6) | RSET(i * (i + 2), MAX, i * 6) j = i +.. 2025. 2. 28.
자율주행 로봇 프로젝트 구현 가이드 실내 평지 자율주행 로봇 프로젝트 계획ESP-32 C3, 라즈베리파이 제로 2W,RPlidar A1M8 자동차 새시 전륜조향 스트럿과 서보모터 세트 후륜 모터와 기어박스 배터리 등이 있다. 자율주행을 하기 위해 어떻게 프로젝트를 진행하는 게 좋을까? 아주 자세한 플랜을 짜고 소프트웨어, 하드웨어적으로 부족하거나 필요한 것은 무엇인지 알려주고 자세한 정보 생성해자율주행 프로젝트를 위한 자세한 플랜을 수립하려면 다음 사항을 추가로 알려주세요:목표 수준: 완전 자율주행(AI 기반 경로 생성 및 주행)인지, 특정 미션(라인 트레이싱, 장애물 회피)인지 등 목표 범위를 알려주세요.환경 조건: 실내 주행인지, 실외 주행인지? 특정한 지형(예: 평지, 경사로, 장애물 포함 등)이 있는지?센서 추가 여부: 현재 RPl.. 2025. 2. 27.
YDLIDAR X4PRO 뷰어로 보는 법 https://www.ydlidar.com/products/view/21.html YDLIDAR X4PRO_YDLIDAR|Focus on lidar sensor solutionsTo provide the best experiences, we use cookies and other technologies (incl. 3rd party services) to offer you website features, to understand the usage and to optimize our offering as well as providing you with individualized offers and ads. Consenting towww.ydlidar.com YDLIDAR X4PRO 라이다를 사면 테스트를 .. 2025. 2. 26.
가우시안 소거법 가우시안 소거법 (Gaussian Elimination)와 가우스-조던 소거법선형 대수학의 핵심 알고리즘인 가우시안 소거법은 선형 방정식 시스템을 풀거나 행렬의 역행렬, 행렬식, 그리고 행렬의 계수(rank)를 계산하는 데 널리 사용됩니다. 이 방법은 독일의 수학자 카를 프리드리히 가우스(Carl Friedrich Gauss)의 이름을 따서 명명되었으며, 연립 방정식을 행 사다리꼴(Row Echelon Form) 또는 기약 행 사다리꼴(Reduced Row Echelon Form)로 변환하는 것을 목표로 합니다.https://www.youtube.com/watch?v=L9fTll_vOxQ&pp=ygUT6rCA7Jqw7IqkIOyGjOqxsOuylQ%3D%3Dhttps://www.youtube.com/wa.. 2025. 2. 25.
벨만 포드 알고리즘 벨만 포드 알고리즘그래프에서 최단 경로를 찾기 위한 방법 중 하나로, 음수 가중치가 포함된 경우에도 사용할 수 있다는 점에서 큰 강점.1. 벨만 포드 알고리즘 개요음수 가중치 지원: 다익스트라 알고리즘과 달리 음수 가중치 간선이 존재해도 올바른 최단 경로를 계산할 수 있습니다.음수 사이클 검출: 알고리즘 수행 후, 추가적인 음수 사이클 존재 여부를 확인할 수 있습니다.시간 복잡도: 일반적으로 O(VE)로, 노드(V)와 간선(E)의 수에 비례하는 시간이 소요됩니다.벨만 포드 알고리즘은 단일 출발점 최단 경로 문제를 해결하는 데 유용하며, 특히 음수 간선을 포함한 다양한 문제에서 많이 활용됩니다.2. 알고리즘 동작 원리벨만 포드 알고리즘의 핵심 아이디어는 릴렉세이션(relaxation)입니다. 각 간선을 반.. 2025. 2. 24.
에라토스테네스의 체 import timeimport arrayimport math######################################## 기존 구현들def modsix_sieve(num: int): MAX = num + 1 LIM = int(num ** 0.5) + 1 RSET = lambda start, end, gap: set(range(start, end, gap)) # 5 (mod 6)와 1 (mod 6)에 해당하는 후보들 (단, 1은 소수가 아니므로 7부터) prime = RSET(5, MAX, 6) | RSET(7, MAX, 6) if num > 2: prime.add(3) if num > 1: prime.add(2) fo.. 2025. 2. 24.
1836🐨트리의 가짓수 세기 .py 1836번: 트리의 가짓수 세기시간 제한메모리 제한2 초128 MB문제 설명노드의 개수 n과 트리의 높이 k가 주어질 때, 각 노드가 자식 노드를 0개 또는 2개만 갖는 완전 이진트리 중에서 높이가 정확히 k인 트리의 가짓수를 구합니다. 단, 트리의 가짓수가 매우 클 수 있으므로 최종 결과는 9901로 나눈 나머지를 출력해야 합니다.예제 입력5 3​예제 출력2​해결 과정이 문제는 다이나믹 프로그래밍(DP)을 활용하여 해결할 수 있습니다. 알고리즘의 핵심 포인트는 다음과 같습니다.완전 이진트리의 조건: 각 노드는 자식이 0개 또는 2개여야 하므로, 전체 노드의 수 n은 반드시 홀수여야 합니다. 만약 n이 짝수라면 완전 이진트리를 구성할 수 없으므로 결과는 0입니다.높이4 노드9개인 예DP 테이블 정.. 2025. 2. 23.
RISC(축소 명령어 집합 컴퓨터) RISC(축소 명령어 집합 컴퓨터)란?RISC는 Reduced Instruction Set Computer 로, 명령어 집합을 단순화하여 파이프라인 처리 효율을 극대화하고 CPU의 성능과 전력 효율을 높이는 아키텍처입니다.1. 등장 배경기존의 CISC (Complex Instruction Set Computer) 는 복잡한 명령어를 한 번에 처리하기 위해 다양한 기능을 포함했으나, 이로 인해 CPU 설계가 복잡해졌습니다. 이에 반해 RISC는 명령어의 수를 줄이고 단순화하여 파이프라이닝 을 최적화함으로써 성능과 전력 효율을 개선하는 방향으로 고안되었습니다.2. 주요 특징단순하고 적은 수의 명령어불필요한 복잡함을 제거하고, 자주 사용하는 기본 연산에 집중합니다.로드-스토어 구조메모리 연산은 오직.. 2025. 2. 22.
14939🐨불 끄기-파이썬 불 끄기시간 제한메모리 제한1 초128 MB문제전구 100개가 10×10 정사각형 모양으로 늘어서 있다. 전구에 달린 스위치를 누르면 그 전구와 위, 아래, 왼쪽, 오른쪽에 있는 전구의 상태도 바뀐다. 전구 100개의 상태가 주어지면 모든 전구를 끄기 위해 최소한으로 눌러야 하는 스위치의 개수를 출력하라입력10줄에 10글자씩 입력이 주어진다. #은 꺼진 전구고 O(대문자 알파벳 o)는 켜진 전구다. #과 O외에는 입력으로 주어지지 않는다.출력모든 전구를 끄기 위해 최소한으로 눌러야 하는 스위치의 개수를 출력하라. 불가능하면 -1를 출력하라.예제 입력 및 출력#O########OOO########O############OO#######O##O#######OO######################O####.. 2025. 2. 21.
이분그래프 이분 그래프 판별 알고리즘 설명1. 이분 그래프란?이분 그래프(Bipartite Graph)는 그래프의 정점들을 두 그룹으로 나눌 수 있어서, 각 그룹 내의 정점들 사이에는 간선이 없는 그래프를 말합니다.2. 알고리즘 흐름도3. BFS를 이용한 색칠 과정 이분 그래프와 관련 알고리즘이분 그래프는 노드를 두 그룹으로 나눌 수 있으며, 같은 그룹 내의 노드끼리는 간선이 연결되지 않는 그래프다.        이분 그래프와 알고리즘이분 그래프는 정점 집합을 두 개의 그룹(U, Vredcubes.tistory.com  4. 코드 구현 설명주요 구현 단계:그래프 생성 graph = [[] for _ in range(v + 1)] for u, w in edges: .. 2025. 2. 19.
RPI5 SD card 부팅 상태에서 NVMe로 이미지 복사해서 전환하기 하드웨어 준비물라즈베리파이 5M.2 NVMe가 장착 가능한 PCle 인터페이스 HAT(for RPi5)M.2 NVMe위 준비물조합 × n개 세트작업내용부트로더 업데이트 및 부팅 순서 설정: NVMe 에 부트 미디어가 있는지 부트로더가 살펴보게 합니다.부트로더 업데이트: 최신 부트로더를 사용해야 NVMe 부팅이 가능합니다. SD 카드를 통해 라즈베리파이를 부팅한 후, 터미널에서 다음 명령어를 실행하여 부트로더를 업데이트하세요.sudo apt updatesudo apt full-upgradesudo rpi-eeprom-update -d -a부팅 순서 설정: 부트로더 설정 파일을 편집하여 NVMe를 우선 부팅 장치로 지정해야 합니다. 다음 명령어를 실행하여 설정 파일을 엽니다.sudo -E rpi-eeprom.. 2025. 2. 16.