전체 글303 RSA 암호화 알고리즘의 원리와 예시 (백준 3734번 문제 풀이 포함) RSA 암호화 알고리즘의 원리와 예시 (백준 3734번 문제 풀이 포함)RSA(Rivest-Shamir-Adleman)는 현대 정보 보안에서 가장 널리 사용되는 공개 키 암호화 알고리즘이다. 1977년 MIT의 연구자인 론 리베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)이 개발하였으며, 이들의 이름 앞글자를 따서 RSA라는 이름이 붙었다.이 글에서는 RSA의 수학적 원리, 키 생성 과정, 암호화 및 복호화 방식, 그리고 실제 문제 풀이를 통해 RSA 알고리즘을 자세히 알아본다.1. RSA 암호화 알고리즘이란?RSA는 공개 키와 개인 키라는 두 가지 키를 사용하는 비대칭 키(Asymmetric-key) 암호화 방식이다. 여기서 공개 키는 데이.. 2025. 4. 5. MCP https://www.youtube.com/watch?v=Qdu6Sv-NpeU MCP(Model Context Protocol)의 급부상엔트로픽(Anthropic)이 개발한 MCP는 다양한 AI 앱 간 호환성을 가능하게 해주는 프로토콜로, 출시된 지 3개월 만에 빠르게 확산되며 전 세계 개발자들 사이에서 큰 주목을 받고 있습니다.AI 앱 개발의 파편화 해소기존에는 각각의 LLM(예: ChatGPT, Claude, Groq 등)에 맞춰 앱을 따로 개발해야 했지만, MCP는 하나의 규약만 따르면 다양한 플랫폼에서 작동하는 AI 앱을 쉽게 만들 수 있게 해줍니다.플러그인 생태계의 확장MCP 기반 서버(플러그인)를 설치하면 파일 시스템 접근, 검색, 편집 등 다양한 기능을 LLM에서 바로 활용할 수 있으며, .. 2025. 4. 4. AI 동향 GPT이미지 생성 업그레이드 원본 - 공각기동대('95) 스타일, 지브리 스타일, 90년대 소년만화 스타일,2000년대 RPG게임 일러스트 스타일, 신지 에바에 타라.대폭 업그레이드된 이미지 생성 기능오픈AI가 GPT-4.5의 이미지 생성 기능을 크게 향상시켜, 기존 단순 이미지 생성에서 벗어나 복잡한 프롬프트를 반영한 멀티모달, 멀티턴 이미지 생성이 가능해졌습니다.세밀하고 정교한 디테일 구현텍스트, 질감, 인물, 배경 등 다양한 요소를 정확하게 표현하며, 실제 사진처럼 사실적인 이미지 및 인포그래픽을 만들어냅니다.다양한 스타일 변환 및 응용스튜디오 지브리, 심슨 스타일, 복셀 아트 등 여러 예술적 스타일로 변환이 가능하며, UI 디자인, 아이콘, GIF 등 다양한 포맷으로 응용할 수 있습니다.멀티턴 상호작용 기능생성된 이미지를 기.. 2025. 3. 31. PS(Problem Solving)에서의 컨볼루션과 컴퓨터 비전(CV, Computer Vision)에서의 컨볼루션 PS(Problem Solving)에서의 컨볼루션과 컴퓨터 비전(CV, Computer Vision)에서의 컨볼루션은 이름은 같지만 목적과 구현이 꽤 다릅니다.🎯 핵심 비교 요약항목 항목 PS에서의 컨볼루션 CV에서의 컨볼루션 목적수열/다항식 연산, 경우의 수 계산, 패턴 매칭 등이미지 필터링, 특징 추출, 패턴 인식수학적 정의선형 컨볼루션 (다항식 곱셈과 유사)2D 필터 커널을 슬라이딩하며 합성곱연산 대상1차원 수열 (또는 다항식)2차원 행렬 (이미지)연산 방식전 수열에 걸쳐 계산 (global)커널을 국소 영역에 적용 (local)알고리즘FFT로 고속화CNN 등에서 커널 학습대표 응용조합/경우의 수 문제, 문자열 패턴 매칭엣지 검출, 블러링, CNN 이미지 분류🔍 구체적인 차이1. 연산 대상.. 2025. 3. 31. 1067번 이동 이동시간 제한메모리 제한1 초512 MB문제N개의 수가 있는 X와 Y가 있다. 이때 X나 Y를 순환 이동시킬 수 있다. 순환 이동이란 마지막 원소를 제거하고 그 수를 맨 앞으로 다시 삽입하는 것을 말한다. 예를 들어, 1,2,3을 순환 이동시키면 3,1,2가 될 것이고, 3,1,2는 2,3,1이 된다. 순환 이동은 0번 또는 그 이상 할 수 있다. 이 모든 순환 이동을 한 후에 점수를 구하면 된다. 점수 S는 다음과 같이 구한다.S=X[0]×Y[0]+X[1]×Y[1]+...+X[N−1]×Y[N−1]이때 S를 최대로 하면 된다.입력첫째 줄에 N이 주어진다. 둘째 줄에는 X에 들어있는 N개의 수가 주어진다.. 2025. 3. 30. Black and White Stones Black and White Stones문제 개요검은 돌과 흰 돌이 섞여 일렬로 놓여 있습니다. 이 게임에서 플레이어는 돌들을 움직여 모든 검은 돌을 왼쪽으로, 모든 흰 돌을 오른쪽으로 모으는 것이 목표입니다. 하지만 돌을 옮길 때마다 코인이 들기 때문에, 최대한 적은 비용으로 목표를 달성해야 합니다. 최소한의 코인 비용으로 돌들을 정렬하는 방법을 찾아보겠습니다.예시작은 예로 초기 배치가 BWWB (B는 검은 돌, W는 흰 돌)인 경우를 생각해봅시다. 위치1234 초기BWWB 목표BBWW이 예시에서 A = 2, B = 1이라면 인접 교환은 1코인, 비인접 교환은 2코인이 됩니다.해결 전략왼쪽의 흰 돌과 오른쪽의 검은 돌을 서로 교환해야 합니다. 이때 직접 교환할지, 인접 교환을 여러 번 할지를 비용.. 2025. 3. 29. 백준 28237번 문제 풀이 - 수학 선생님의 고민(Easy) 문제 분석주어진 이차식은 다음과 같다. nx2+(n+1)x−(n+2)이를 정수 범위 내에서 인수분해 가능한지 판별하고, 가능하면 인수분해의 형태를 출력하는 문제이다.풀이 방법이 문제는 이차식을 정수 범위 내에서 인수분해하기 위한 정수 계수의 조합을 찾는 것이 핵심이다.일반적인 형태의 인수분해는 다음과 같다. (ax+b)(cx+d)=acx2+(ad+bc)x+bd즉, 이 문제에서는 아래의 방정식을 만족해야 한다.ac=nad+bc=n+1bd=−(n+2)알고리즘 설계모든 a,c의 조합을 찾는다. 이 때, ac=n 이므로 n의 모든 약수 조합을 탐색한다.각각의 조합에 대해 bd=−(n+2)를 만족하는 b,d의 조합을 찾는다. 즉, −(n+2).. 2025. 3. 27. Python의 memoryview 객체 심층 분석 Python의 memoryview 객체 심층 분석파이썬의 memoryview 객체는 버퍼 프로토콜을 지원하는 객체의 메모리에 직접 접근할 수 있는 기능을 제공합니다. 이를 통해 대용량 데이터 처리 시 메모리 복사를 최소화하여 성능을 향상시킬 수 있습니다. 이 글에서는 memoryview의 저수준 동작 원리와 다양한 활용 사례를 심도 있게 다루고자 합니다.1. 메모리뷰의 저수준 동작 원리파이썬은 내부적으로 버퍼 프로토콜을 사용하여 객체의 메모리에 직접 접근할 수 있도록 설계되어 있습니다. memoryview는 이러한 버퍼 프로토콜을 구현한 객체에 대한 뷰를 제공하며, 이를 통해 데이터 복사 없이도 메모리에 직접 접근할 수 있습니다. 이는 C 언어의 포인터 개념과 유사하며, 메모리 효율성을 크게 향상시킵니다.. 2025. 3. 11. Python의 memoryview와 cast() 활용 Python의 memoryview와 cast() 활용1. memoryview란?memoryview는 파이썬에서 제공하는 강력한 기능 중 하나로, bytes 또는 bytearray 같은 바이너리 데이터를 복사 없이 조작할 수 있도록 해줍니다.이 기능을 사용하면 데이터의 복사를 최소화하여 성능을 최적화할 수 있습니다.예제 1: 기본적인 memoryview 사용data = bytearray([0, 10, 20, 30, 40, 50])view = memoryview(data)print(view[1]) # 10view[1] = 100print(data) # bytearray(b'\x00d\x14\x1e(2') 2. cast()를 활용한 데이터 변환memoryview의 cast() 메서드를 사용하면 데이터.. 2025. 3. 10. 16561🐨3의 배수 python 3의 배수를 덧셈으로 나타내는 방법의 가짓수를 구하는 문제이므로, 가장 단순한 경우인 3의 덧셈만으로 3의 배수를 표현하는 방법을 생각해 보자.예를 들어, 9를 고려해 보자.3 3 3여기서 덧셈 기호를 넣을 수 있는 자리는 두 군데이며, 우리는 세 개의 3을 사용해야 하므로 두 개의 덧셈 기호를 반드시 넣어야 한다. 따라서 가능한 방법은 한 가지뿐이다.이제 12의 경우를 살펴보자.3 3 3 3첫 번째 칸에 덧셈 기호를 넣으면 나머지 두 칸 중 하나를 선택할 수 있으며, 첫 번째 칸이 아닌 두 번째 칸에 덧셈을 넣으면 남은 한 칸에만 추가할 수 있다. 따라서 가능한 경우의 수는 2+1=3 가지가 된다.더 큰 수인 21의 경우를 살펴보고 일반화해 보자.3 3 3 3 3 3 3여기서 두 개의 덧셈 .. 2025. 3. 9. App Script - 선택한 시간셀의 배색을 서울 기준 낮과 밤에 맞게 꾸미기 function setSkyColorForSelectedCells() { try { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var selection = sheet.getActiveRange(); var values = selection.getValues(); var today = new Date(); var latitude = 37.5665; // 서울 기준 var longitude = 126.9780; var twilightTimes = getTwilightTimes(latitude, longitude, today); Logger.log("🌅 시민박명 시작 (K.. 2025. 3. 9. 교차 매칭 (Crossed Matchings) 교차 매칭 (Crossed Matchings)시간 제한메모리 제한1 초128 MB문제양의 정수가 적힌 두 행이 있습니다. 첫 번째 행에 있는 숫자와 두 번째 행에 있는 숫자 중 서로 값이 같은 r인 두 숫자 사이에 선분을 그을 수 있습니다. 이 선분을 r-매칭 선분이라고 부릅니다. 아래 그림은 3-매칭과 2-매칭 선분을 보여줍니다.주어진 입력에 대해 다음 조건을 만족하면서 그릴 수 있는 최대 매칭 선분의 수를 찾고자 합니다:1. 각 a-매칭 선분은 정확히 하나의 b-매칭 선분과 교차해야 합니다. 단, a ≠ b입니다. 2. 한 숫자에서 두 개의 매칭 선분을 그릴 수 없습니다. 예를 들어, 다음과 같은 매칭은 허용되지 않습니다.입력 데이터에 대한 최대 매칭 선분의 수를 계산하는 프로그램을 작성하세요. 이 .. 2025. 3. 7. 33167번 - じゃんけん (Rock-Scissors-Paper) 33167번 - じゃんけん (Rock-Scissors-Paper)가위바위보 (Rock-Scissors-Paper)길이 N의 문자열 S, T가 주어진다. S의 각 문자는 R 또는 S 중 하나이다. T의 각 문자는 R 또는 P 중 하나이다.아오이와 비타로는 N번의 가위바위보를 했다. 아오이가 i번째(1 ≤ i ≤ N) 가위바위보에서 낸 것은 S의 i번째 문자가 R일 때는 바위, S일 때는 가위이다. 비타로가 i번째(1 ≤ i ≤ N) 가위바위보에서 낸 것은 T의 i번째 문자가 R일 때는 바위, P일 때는 보이다.전체 N번의 가위바위보에서 아오이가 이긴 횟수와 비타로가 이긴 횟수를 구하시오.입력입력은 다음 형식으로 주어진다.NST출력전체 N번의 가위바위보에서 아오이가 이긴 횟수와 비타로가 이긴 횟수를 단위(회.. 2025. 3. 3. 바이트배열을 이용한 에라토스테네스의 체와 그 업그레이드 버전 바이트 배열을 이용한 에라토스테네스의 체가 가장 빠르다는 실험을 했는데 다른 방법을 찾았다.바이트 배열에 홀수만 저장하는 것이다.메모리를 반만 쓸 수 있다.그리고 온라인 저지 상에서는 더 빨랐다.실제로는 좀 더 느리지만 근소한 차이를 보였다.메모리까지 종합적으로 보면 더 우수하다고 할 수 있다.그리고 내가 살짝 튠을 해 보니 조금 더 빠르게 할 수 있었다.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 2 3 4 ··· 17 다음