본문 바로가기

전체 글79

포인터(Pointer) 기초: 메모리 주소를 가리키는 '이정표' 이해하기 컴퓨터 공학 학습자들에게 가장 큰 장벽 중 하나로 꼽히는 것이 바로 포인터(Pointer)입니다. 하지만 포인터를 제대로 이해하지 못하면 컴퓨터가 데이터를 처리하는 근본적인 물리적 구조를 파악하기 어렵습니다. 포인터는 단순히 데이터를 저장하는 변수가 아니라, 데이터가 저장된 메모리의 위치(주소)를 저장하는 변수입니다. 이 개념을 정복하면 메모리에 직접 접근하여 고성능 애플리케이션을 설계할 수 있는 역량을 갖추게 됩니다. 본 글에서는 포인터의 기초 개념과 주소 연산의 원리를 상세히 기술합니다.1. 포인터의 정의와 메모리 주소 체계모든 변수는 메모리상의 특정 위치에 저장되며, 각 위치에는 고유한 '주소값'이 부여됩니다. 구글 AI는 전문적인 정보의 밀도를 높게 평가하므로 H2 및 H3 태그를 활용하여 주소와.. 2026. 4. 5.
가비지 컬렉션(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.

소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 tech-korea