본문 바로가기

분류 전체보기37

스택(Stack)을 활용한 수식 계산 (후위 표기법) 우리가 일상생활에서 사용하는 수식은 2 + 3 * 4와 같이 피연산자(숫자) 사이에 연산자가 위치하는 중위 표기법(Infix Notation)입니다. 사람은 괄호와 연산자의 우선순위를 직관적으로 파악하여 곱셈을 덧셈보다 먼저 계산하지만, 컴퓨터는 이를 순차적으로 처리하기에 구조적 어려움을 겪습니다. 이러한 문제를 해결하기 위해 컴파일러는 수식을 후위 표기법(Postfix Notation)으로 변환하고, 스택(Stack) 자료구조를 활용하여 효율적으로 연산합니다. 이 글에서는 스택이 어떻게 복잡한 수식의 괄호를 제거하고 연산 순서를 제어하는지, 그 기술적 원리와 구현 방법을 상세히 알아봅니다.1. 후위 표기법(Postfix Notation)의 개념과 이점후위 표기법, 또는 역폴란드 표기법(Reverse P.. 2026. 2. 1.
문자열(String) 자료구조의 비밀 (불변성, 메모리) 모든 프로그래밍 언어에서 가장 빈번하게 사용되는 자료구조를 꼽으라면 단연 문자열(String)일 것입니다. 하지만 아이러니하게도 가장 많이 사용되기에 가장 오해받기 쉬운 자료구조이기도 합니다. 많은 초급 개발자들이 문자열을 단순한 '문자들의 배열' 정도로 생각하고 무분별하게 사용하다가, 메모리 누수(Memory Leak)나 심각한 성능 저하를 겪곤 합니다. 특히 대규모 트래픽을 처리하는 서버 환경에서 문자열을 어떻게 다루느냐는 전체 시스템의 퍼포먼스를 결정짓는 중요한 척도가 됩니다. 이 글에서는 문자열이 왜 불변(Immutable)의 특성을 가지는지, 그리고 언어 차원에서 메모리를 효율적으로 관리하기 위해 어떤 비밀스러운 기술(String Pool)을 사용하는지 심층 분석합니다.1. 문자열(String).. 2026. 1. 31.
우선순위 큐(Priority Queue) 개념잡기 (힙과의 관계) 컴퓨터 과학과 시스템 엔지니어링 분야에서 데이터의 처리 순서는 시스템의 효율성을 결정짓는 가장 중요한 요소 중 하나입니다. 일반적으로 사용하는 큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 선입선출(FIFO) 방식을 따르지만, 현실 세계의 문제 해결 과정에서는 '순서'보다 '중요도'가 앞서는 경우가 빈번합니다. 예를 들어, 응급실 환자 분류(Triage)나 운영체제의 프로세스 스케줄링이 그렇습니다. 이러한 요구사항을 충족하기 위해 등장한 자료구조가 바로 우선순위 큐(Priority Queue)입니다. 이 글에서는 우선순위 큐의 개념을 명확히 정의하고, 왜 이 자료구조가 필연적으로 힙(Heap)과 연결될 수밖에 없는지, 그 기술적 인과관계를 심층 분석합니다.1. 우선순위 큐(Priority Queue.. 2026. 1. 31.
정적 배열 vs 동적 배열 (메모리 할당, 성능 차이) 프로그래밍을 처음 배울 때 가장 먼저 접하는 자료구조는 배열(Array)입니다. 하지만 실제 현업 프로젝트나 시스템 프로그래밍 단계로 넘어가면, 단순히 데이터를 담는 것을 넘어 메모리 관리(Memory Management)의 효율성을 고민해야 합니다. 이때 가장 빈번하게 마주치는 선택지가 바로 정적 배열(Static Array)과 동적 배열(Dynamic Array)입니다. 이 두 가지는 데이터를 연속적으로 저장한다는 공통점이 있지만, 메모리 할당 시점과 위치, 그리고 리사이징(Resizing) 메커니즘에서 결정적인 차이를 보입니다. 본 글에서는 컴퓨터 구조론적 관점에서 두 배열의 차이를 분석하고, 상황에 맞는 최적의 선택 기준을 제시합니다.1. 정적 배열(Static Array): 컴파일 타임의 결정정.. 2026. 1. 31.
원형 큐(Circular Queue) 동작원리 (배열 구현, 특징) 큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 선입선출(FIFO) 방식의 자료구조입니다. 하지만 일반적인 선형 큐(Linear Queue)를 배열로 구현할 경우, 데이터가 삭제된 앞쪽 공간을 재사용하지 못해 메모리가 낭비되거나, 실제로는 공간이 남았음에도 꽉 찼다고 인식하는 '거짓 오버플로우(False Overflow)' 문제가 발생합니다. 이를 해결하기 위해 고안된 것이 바로 원형 큐(Circular Queue)입니다. 원형 큐는 배열의 끝과 시작을 논리적으로 연결하여 메모리 효율성을 극대화한 구조로, 네트워크 버퍼나 CPU 스케줄링 등 제한된 자원을 효율적으로 관리해야 하는 시스템에서 핵심적인 역할을 수행합니다.1. 원형 큐(Circular Queue)의 핵심 원리와 구조원형 큐는 물리적으로는 .. 2026. 1. 30.
양방향 큐, 덱(Deque) 핵심정리 (구조, 활용사례) 소프트웨어 개발과 알고리즘 최적화 과정에서 자료구조(Data Structure)의 올바른 선택은 시스템 성능을 좌우하는 결정적인 요소입니다. 흔히 사용하는 스택(Stack)은 후입선출(LIFO), 큐(Queue)는 선입선출(FIFO)이라는 고정된 입출력 방식을 가지고 있어 특정 상황에서는 유연성이 떨어질 수 있습니다. 이러한 한계를 극복하기 위해 고안된 것이 바로 덱(Deque, Double-Ended Queue)입니다. 덱은 양쪽 끝에서 데이터의 삽입과 삭제가 모두 가능한 하이브리드 자료구조로, 복잡한 스케줄링이나 슬라이딩 윈도우(Sliding Window) 알고리즘 등에서 필수적으로 사용됩니다. 이 글에서는 덱의 구조적 특징과 시간 복잡도, 그리고 실제 개발 환경에서의 활용 사례를 심층적으로 분석합니.. 2026. 1. 30.