분류 전체보기304 RSA 암호화와 모듈러 연산 개념 정리 1. RSA 암호화 알고리즘 기초1.1 RSA란?공개 키(Public Key)와 개인 키(Private Key)를 사용하는 비대칭 암호화 알고리즘이다.소인수 분해가 어려운 수학적 성질을 이용하여 보안을 확보한다.1.2 키 생성 과정두 개의 작은 소수 p=3, q=11 선택n=p×q=3×11=33오일러 함수: φ(n)=(p−1)(q−1)=2×10=20공개 키 지수 e=7 선택 (조건: gcd(7,20)=1)개인 키 지수 d 계산: ed \equiv 1 \mod{20} \Rightarrow 7 \cdot d \equiv 1 \mod{20} → d = 3 (왜냐하면 $7 \cd.. 2025. 4. 5. 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) 문제 분석주어진 이차식은 다음과 같다. nx^2 + (n+1)x - (n+2)이를 정수 범위 내에서 인수분해 가능한지 판별하고, 가능하면 인수분해의 형태를 출력하는 문제이다.풀이 방법이 문제는 이차식을 정수 범위 내에서 인수분해하기 위한 정수 계수의 조합을 찾는 것이 핵심이다.일반적인 형태의 인수분해는 다음과 같다. (ax + b)(cx + d) = acx^2 + (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. 이전 1 2 3 4 ··· 26 다음