본문 바로가기

전체 글54

가비지 컬렉션(GC): 자바나 파이썬이 메모리를 청소하는 방식 현대 프로그래밍 언어의 가장 큰 축복 중 하나는 개발자가 메모리 해제라는 복잡한 작업에서 해방되었다는 점입니다. 자바(Java), 파이썬(Python), 자바스크립트(JavaScript)와 같은 언어들은 내부적으로 가비지 컬렉션(Garbage Collection, 이하 GC)이라는 자동 메모리 관리 시스템을 가동합니다. GC는 시스템에서 더 이상 사용하지 않는 메모리 조각을 찾아내어 자동으로 수거함으로써 메모리 누수를 방지합니다. 본 글에서는 GC의 작동 원리와 다양한 알고리즘을 분석하여 고효율 코드를 작성하는 방법을 살펴봅니다.1. 가비지 컬렉션(GC)의 기본 원리와 필요성프로그램이 실행되면 수많은 객체가 생성되고 메모리를 점유합니다. 만약 수명이 다한 객체가 계속 메모리에 남아 있다면 결국 시스템은 .. 2026. 4. 5.
좌표 압축(Coordinate Compression) (불필요한 공간을 줄이는 테크닉) 알고리즘 문제를 풀다 보면 다음과 같은 아찔한 제약 조건을 마주할 때가 있습니다. "점의 개수 N은 10만 개입니다. 그런데 각 점의 x, y 좌표 범위는 -10억부터 +10억까지입니다." 만약 이 점들을 다루기 위해 크기가 20억인 배열(Array)을 만들거나 세그먼트 트리를 구축하려고 한다면, 수 기가바이트의 메모리를 잡아먹으며 즉각적으로 메모리 초과(MLE) 판정을 받게 될 것입니다. 실제 데이터(점)는 고작 10만 개뿐인데, 그들이 놀고 있는 운동장(좌표계)이 너무 넓어서 발생하는 낭비입니다. 이때 좌표들의 '절댓값'은 무시하고, 오직 점들 사이의 '상대적인 대소 관계(순위)'만 남겨서 0번부터 N번까지의 촘촘한 배열로 우겨 넣는 천재적인 테크닉이 있습니다. 이것이 바로 '좌표 압축(Coordin.. 2026. 4. 3.
CCW(Counter Clock Wise) 함수 활용법 (기하 문제 해결의 만능 열쇠) 컴퓨터에서 기하학(Geometry) 문제를 풀 때 가장 피해야 할 것은 무엇일까요? 바로 $\sin$, $\cos$ 같은 삼각함수나 나눗셈을 무분별하게 사용하는 것입니다. 부동소수점(Floating Point)의 미세한 오차가 누적되는 순간, 교차해야 할 선분이 교차하지 않는다고 판정되는 끔찍한 오답의 늪에 빠지게 됩니다. 오차 없이 오직 정수들의 덧셈, 뺄셈, 곱셈만으로 2차원 공간상에 놓인 세 점의 방향 관계를 완벽하게 판독해 내는 기하학의 마스터키가 있습니다. 바로 외적(Cross Product)의 원리를 차용한 CCW(Counter Clock Wise, 반시계 방향) 알고리즘입니다.1. CCW의 수학적 본질: 2차원 벡터의 외적점 $A(x_1, y_1)$, $B(x_2, y_2)$, $C(x_3,.. 2026. 4. 2.
컨벡스 헐(Convex Hull) 알고리즘 (기하 알고리즘: 그라함 스캔 원리) 2차원 평면 위에 수많은 못이 무작위로 박혀 있다고 상상해 보십시오. 이 못들을 모두 감싸도록 거대한 고무줄을 팽팽하게 당겼다 놓았을 때, 고무줄이 걸치게 되는 가장 바깥쪽 못들의 집합(다각형)을 찾는 문제를 기하학에서는 '컨벡스 헐(Convex Hull, 볼록 껍질)'이라고 부릅니다. 자율주행 자동차의 장애물 충돌 판정, 영상 인식에서의 객체 테두리 추출 등 수많은 실생활 최적화 문제의 뼈대가 되는 이 문제를 해결하기 위해, O(N^3)의 무식한 브루트 포스 방식을 단숨에 O(N log N)으로 끌어내린 우아한 알고리즘이 있습니다. 바로 로널드 그라함(Ronald Graham)이 고안한 '그라함 스캔(Graham Scan)'입니다.1. 기준점 찾기와 각도 정렬(Polar Angle Sort)그라함 스캔.. 2026. 4. 1.
단절점(Articulation Point)과 단절선(Bridge) (그래프의 핵심 연결고리 찾기) 전국을 거미줄처럼 잇는 통신 네트워크나 도로망이 있습니다. 테러리스트가 이 네트워크를 마비시키기 위해 단 하나의 기지국(노드)이나 단 하나의 도로(간선)만 폭파시켜도 전체 네트워크가 두 동강이 나버리는 '단일 장애점(Single Point of Failure)'을 찾는다면 어디일까요? 그래프 이론에서는 이를 단절점(Articulation Point)과 단절선(Bridge)이라고 부릅니다. 이 치명적인 약점을 찾기 위해 모든 노드를 한 번씩 지워보고 그래프가 끊어지는지 일일이 BFS/DFS로 확인한다면 O(V * (V+E))의 끔찍한 시간이 소요됩니다. 하지만 타잔(Tarjan)이 고안해 낸 DFS 스패닝 트리와 우회로 탐색 기법을 사용하면, 그래프를 단 한 번 훑는 O(V+E)의 선형 시간 만에 모든 단.. 2026. 2. 27.
최소 비용 최대 유량(MCMF) 알고리즘 (네트워크 플로우의 심화 확장) 앞서 다루었던 에드몬드-카프 알고리즘이 "배관망에서 목적지까지 얼마나 많은 물을 쏟아부을 수 있는가?"라는 '최대 유량'에만 집착했다면, 현실 세계의 네트워크 문제는 한 차원 더 높은 최적화를 요구합니다. 물건을 운송할 때 도로마다 통행료(비용)가 존재하고, 통과할 수 있는 트럭의 대수(용량)도 정해져 있습니다. "도착지까지 물건을 최대한 많이 보내되(Max Flow), 그 과정에서 발생하는 배송 비용을 최소화(Min Cost)하라!" 이 두 마리 토끼를 동시에 완벽하게 잡아내는 끝판왕 알고리즘이 바로 최소 비용 최대 유량(Min-Cost Max-Flow, 이하 MCMF)입니다. 네트워크 플로우와 최단 거리 탐색(Shortest Path)이 결합된 이 우아한 하이브리드 알고리즘의 동작 원리를 낱낱이 파헤.. 2026. 2. 27.