목록2025/08 (7)
개발자공부일기
백준 https://www.acmicpc.net/problem/1934를 유클리드 호제법으로 풀던 와중 코드를 잘 썼다고 생각했는데 정상작동하지 않았습니다.그래서 유클리드 호제법에 대해 다시 정리하며 제가 실수한 부분을 다시 살펴보려 합니다. 두 정수 a, b의 최소공배수(LCM)를 구하려면 보통 최대공약수(GCD)를 먼저 구한 뒤LCM(a, b) = a × b / GCD(a, b) 공식을 씁니다.이때 핵심이 되는 게 유클리드 호제법이고, 재귀식은 다음 한 줄로 요약됩니다.gcd(a, b) → gcd(b, a % b) 유클리드 호제법의 이론1.큰 수를 작은 수로 나누는 MOD 연산을 수행한다.2.앞 단계에서의 작은 수와 MOD 연산 결괏값으로 MOD연산을 수행한다.3.2를 반복하며 MOD연산의 결과가 0..
에라토스테네스의 체란?에라토스테네스의 채(Sieve of Eratosthenes)는 소수 판별 알고리즘이다.특정 범위(예: 1 ~ N) 안에 존재하는 모든 소수를 효율적으로 찾기 위해 고안되었다.핵심 아이디어는어떤 수가 소수라면, 그 수의 배수들은 모두 소수가 아니다.따라서 소수를 하나씩 찾으면서, 그 소수의 배수를 지워 나가면 된다.1.알고리즘 흐름2부터 N까지를 모두 후보로 둔다.아직 지워지지 않은 가장 작은 수 p를 찾는다. p는 소수다.p의 배수들을 지운다. (보통 p*p부터 지운다)p를 다음 수로 옮기며, p ≤ √N일 동안 반복한다.남은 수가 모두 소수다.2. 동작 과정예를 들어 N = 30 까지의 소수를 구한다고 하자.초기화2부터 30까지 모든 수를 후보로 둔다. (1은 소수가 아니므로 제외..
stringstream으로 C++에서 문자열 다루기개발하다 보면 문자열을 숫자로 바꾸거나, 공백 또는 구분자를 기준으로 잘라야 할 일이 있습니다.전화번호 "010-1234-5678"를 쪼개거나 "5000"이라는 문자열을 숫자 5000으로 바꾸는 작업이 그 예입니다.이때마다 복잡한 루프나 substr()을 쓰기보다는, C++의 stringstream라는 친구가 있습니다.stringstream이란?C++ 표준 라이브러리 에 포함된 stringstream은 문자열을 cin처럼 다룰 수 있게 해주는 클래스입니다.즉, 문자열을 스트림에 싣고, 그 안에서 >>, cin: 키보드 입력을 받는 스트림stringstream: 문자열을 입력처럼 다루는 스트림기본 사용법1. >> 연산자 – 공백 기준으로 문자열 자르기str..
auto란 무엇인가?auto는 C++11부터 도입된 타입 추론 키워드입니다. 즉, 변수 선언 시 개발자가 자료형을 직접 쓰지 않아도 컴파일러가 자동으로 판단하여 변수 타입을 정해줍니다.예전에는 반복자를 다음과 같이 선언해야 했습니다.std::vector::iterator it = vec.begin();하지만 auto를 사용하면 아래처럼 훨씬 간단하게 쓸 수 있습니다.auto it = vec.begin();auto의 주요 특징복잡한 타입도 자동 처리: 반복자, 람다, map, pair 등에서 유용코드 가독성 향상: 자료형 생략으로 깔끔한 코드 작성 가능유지보수에 유리: 자료형이 바뀌어도 변수 선언을 바꿀 필요가 없음rbegin()과 rend()란 무엇인가?STL 컨테이너에서는 일반적으로 begin()과 e..
DFS (Depth-First Search)1. DFS란?DFS는 깊이 우선 탐색이라 하며, 한 정점에서 시작해 갈 수 있는 한 깊이 들어갔다가, 더 이상 갈 수 없으면 이전 지점으로 되돌아오는(backtracking) 방식의 그래프 탐색 알고리즘이다.스택(Stack) 자료구조를 사용하거나, 재귀 호출을 통해 시스템 호출 스택을 활용한다.2. DFS의 원리시작 정점을 방문하고 방문 표시를 한다.현재 정점에서 갈 수 있는 이웃 정점 중 아직 방문하지 않은 정점을 하나 선택해 이동한다.이동한 정점에서 1~2 과정을 반복한다.더 이상 방문할 이웃이 없으면 이전 정점으로 되돌아가 다른 경로를 탐색한다.모든 정점을 방문할 때까지 반복한다.3. 반복형 DFS 코드vector dfs_iter(int start, co..

Windows에서 WSL2를 사용하다 보면, 메모리나 CPU 사용량이 과도하게 올라가서 컴퓨터 전체 성능에 영향을 줄 때가 있습니다.이럴 때 .wslconfig 파일을 사용하면 WSL2 전체의 자원 사용량을 직접 제어할 수 있습니다.이번 글에서는 .wslconfig 파일 생성부터 적용 확인까지 과정을 정리해 보겠습니다.1. .wslconfig 파일이란?위치: C:\Users\\.wslconfig역할: WSL2 전역(Global) 설정 파일특징: Ubuntu, Debian 같은 모든 WSL2 배포판과 Docker Desktop까지 설정이 한 번에 적용됩니다.즉, 한 번 설정하면 내 컴퓨터에서 실행되는 WSL2 전체 환경에 공통으로 반영됩니다.2. .wslconfig 파일 만들기메모장 실행아래와 같은 내용을..
최근 프로젝트에서 Middleware를 통해 인증 로직을 추가하던 중, 문제가 발생했다.JWT 토큰을 검증하기 위해 jsonwebtoken 라이브러리를 사용했는데, 실행 시 "Edge 환경에서는 지원되지 않는다"는 에러가 나온 것이다.분명히 환경을 바꾼 적이 없는데, 왜 Edge 환경에서 실행되는 걸까?이번 글에서는 Next.js에서 Node.js와 Edge 환경이 각각 어디서 실행되고, 어떤 차이가 있는지를 정리해본다.Next.js 안의 실행 영역Next.js 프로젝트는 단순히 서버에서만 돌아가는 게 아니다. 내부적으로 여러 실행 영역이 나뉘어 있고, 각각의 영역이 다른 런타임을 사용한다. 크게 네 가지로 나눌 수 있다.브라우저(Client)사용자의 PC나 스마트폰에서 실행되는 부분React 클라이언..