Preorder Traversal

전위 순회(Preorder Traversal) 전위 순회(Preorder Traversal)는 트리 자료구조를 탐색하는 가장 기본적인 방법 중 하나이다. 전위 순회는 트리를 탐색하는 깊이 우선 탐색(Depth-First Search, DFS)의 한 형태이다. 이 방법에서는 다음과 같은 순서로 노드를 방문한다: 현재 노드(루트)를 방문합니다. 왼쪽 서브트리를 전위 순회한다. 오른쪽 서브트리를 전위 순회한다. 이 과정은 재귀적으로 수행되며, 루트 노드부터 시작하여 왼쪽 가지를 따라 깊이 내려간 후 오른쪽 가지로 이동한다. 전위 순회의 이름에서 “전위(Pre)“는 부모 노드를 자식 노드보다 먼저(before) 방문한다는 의미를 담고 있다. ...

December 6, 2024 · 9 min · Me

TCPIP 4 Layers vs. OSI 7 Layers

TCPIP 4 Layers vs. OSI 7 Layers 네트워크 통신을 이해하기 위한 두 가지 주요 참조 모델인 OSI 7계층과 TCP/IP 4계층 모델은 네트워크 통신과 프로토콜에 대한 개념적 프레임워크를 제공한다. 두 모델은 서로 다른 접근 방식과 구조를 가지고 있지만, 궁극적인 목표는 동일하다: 시스템 간의 효율적이고 신뢰할 수 있는 통신을 가능하게 하는 것 OSI 7계층 모델과 TCP/IP 4계층 모델은 각각 고유한 장점과 특성을 가지고 있다. OSI 모델은 더 세분화되고 개념적인 접근을 제공하여 네트워크 통신의 복잡성을 이해하는 데 유용한 프레임워크를 제공한다. 반면 TCP/IP 모델은 실용적이고 구현 중심적인 접근으로 현대 인터넷의 기반을 형성했다. ...

October 19, 2024 · 8 min · Me

Latency vs Throughput

Latency vs. Throughput Latency 와 Throughput 은 시스템 성능 평가의 양대 축으로 상호 보완적인 지표이다. Latency는 데이터 전송 지연 시간 (밀리초 단위) 으로, 실시간 화상 회의나 온라인 게임에서 사용자 경험에 직접적 영향을 미친다. Throughput은 초당 처리 가능한 데이터량 (MBps) 으로 대용량 트래픽 처리 능력을 결정한다. 시스템 설계자는 대역폭, 병목 현상, 하드웨어 자원 등 다양한 요소를 고려하여 균형점을 찾아야 한다. 이를 통해 실시간 시스템, 대용량 데이터 처리 등 다양한 응용 분야에서 최적의 성능을 달성할 수 있다. ...

February 18, 2025 · 20 min · Me

Inorder Traversal

중위 순회(Inorder Traversal) 중위 순회(Inorder Traversal)는 트리 자료구조, 특히 이진 트리를 탐색하는 세 가지 기본적인 방법(전위, 중위, 후위) 중 하나이다. 이 순회 방식은 특유의 방문 순서 때문에 특별한 의미와 활용 가치를 지니고 있다. 왼쪽 서브트리를 먼저 방문한 후 현재 노드를 방문하고 마지막으로 오른쪽 서브트리를 방문하는 이 방법은 정렬된 데이터가 필요한 다양한 문제에 활용된다. 이진 검색 트리에서 중위 순회를 수행하면 노드 값이 오름차순으로 방문되는 특성은 검색, 삽입, 삭제, 범위 쿼리 등 많은 작업에서 핵심적인 역할을 한다. 또한 표현식 트리에서 중위 표기법을 생성하거나 트리의 유효성을 검사하는 데에도 널리 사용된다. ...

December 6, 2024 · 12 min · Me

Low-Level Virtual Machine

Low-Level Virtual Machine (LLVM) LLVM은 소스 코드를 최적화하고 대상 플랫폼에 맞는 기계어로 변환하는 모듈식 컴파일러 프레임워크이다. 원래 “Low-Level Virtual Machine"의 약자에서 출발했으나, 현재는 그 이름 그대로 하나의 독립적인 프로젝트가 되어 다양한 언어와 플랫폼을 지원하고 있다. LLVM은 소스 코드 → 중간 표현(IR) 변환부터, 여러 단계의 최적화, 그리고 최종 기계어 코드 생성을 위한 백엔드로 구성되며, 컴파일 타임, 링크 타임, 런타임, 심지어 유휴 시간까지 전반에 걸친 지속적 최적화(Lifelong Optimization) 를 지원한다. LLVM의 핵심 아이디어는 컴파일러를 모듈화하여 프론트엔드(언어 파싱), 중간표현(IR) 최적화, 백엔드(코드 생성) 단계를 독립적으로 개발하고 재사용할 수 있게 만든 것으로, 컴파일러 개발의 유연성과 효율성을 크게 향상시켰다. ...

December 5, 2024 · 6 min · Me

Functions

Functions 함수는 프로그래밍의 핵심 구성 요소로, 특정 작업을 수행하는 독립적이고 재사용 가능한 코드 블록이다. 함수는 입력값(매개변수)을 받아 처리한 후 결과값을 반환할 수 있다. 함수는 코드의 가독성을 높이고 모듈화된 구조를 만들어 유지보수와 확장성을 크게 개선할 수 있다. 함수는 프로그래밍의 근본 개념으로, 다양한 언어에서 조금씩 다른 문법과 용법을 가지고 있지만 기본적인 원리는 동일하다. 각 언어의 특성과 장점을 이해하고 적재적소에 적용함으로써 더 효율적이고 관리하기 쉬운 소프트웨어를 개발할 수 있다. 함수의 기본 개념 함수는 하나의 작업 또는 연산을 수행하기 위해 정의된 코드 집합이며, 필요에 따라 여러 번 호출하여 사용할 수 있다. 함수는 입력 값(매개변수)을 받고, 이를 처리한 후 결과(반환 값)를 돌려줄 수 있어 코드 재사용과 분업에 용이하다. 함수 선언 및 구현 함수 정의: 함수를 정의할 때는 함수 이름과 괄호 안에 입력 매개변수를 명시하며, 중괄호 또는 들여쓰기로 본문을 구분한다. ...

December 5, 2024 · 6 min · Me

Network Topologies

Network Topologies 네트워크 토폴로지는 네트워크를 구성하는 노드와 링크의 물리적, 논리적 배치를 의미한다. 물리적 토폴로지는 실제 장치와 케이블의 배치를, 논리적 토폴로지는 데이터 흐름 경로를 나타낸다. 포인트 - 투 - 포인트, 버스, 스타, 링, 메시, 트리, 하이브리드 등 다양한 유형이 있으며, 각각은 구현 복잡성, 확장성, 장애 허용성, 비용 등에서 차이가 있다. 최근에는 클라우드, 에지 컴퓨팅, IoT 등의 발전으로 하이브리드 형태와 소프트웨어 정의 네트워킹이 주목받고 있다. 4. 핵심 개념 네트워크 토폴로지란 컴퓨터 네트워크에서 노드 (장치) 와 링크 (연결) 가 물리적 또는 논리적으로 배열되고 연결되는 방식을 말한다. 이는 네트워크의 성능, 신뢰성, 확장성에 직접적인 영향을 미치는 중요한 개념이다. ...

December 16, 2024 · 19 min · Me

Adjacency Matrix vs Adjacency List

그래프 표현 방법: 인접 행렬(Adjacency Matrix)과 인접 리스트(Adjacency List) 비교 그래프는 컴퓨터 과학에서 매우 중요한 자료구조로, 데이터 간의 관계를 효과적으로 표현할 수 있다. 그래프를 표현하는 방법을 선택할 때는 해결하려는 문제의 특성과 그래프의 구조를 고려해야 한다. 간선이 적은 희소 그래프의 경우 인접 리스트가 메모리와 성능 면에서 우수 간선이 많은 밀집 그래프나 정점 간 연결 여부를 빠르게 확인해야 하는 경우에는 인접 행렬이 적합하다. 실제로는 두 방법을 혼합하거나 응용한 자료구조를 사용하기도 한다. 많은 실제 응용 사례(소셜 네트워크, 웹 페이지 연결 등)에서는 정점 수에 비해 간선 수가 적은 희소 그래프의 특성을 가지므로 인접 리스트가 더 많이 사용되는 경향이 있다. ...

December 7, 2024 · 5 min · Me

Postorder Traversal

후위 순회(Postorder Traversal) 후위 순회(Postorder Traversal)는 트리 자료구조를 탐색하는 세 가지 기본적인 방법(전위, 중위, 후위) 중 하나로, 특별한 방문 순서와 특성을 가지고 있다. 후위 순회는 자식 노드를 먼저 방문한 후 부모 노드를 방문하는 트리 순회 방법으로, 상향식 처리가 필요한 다양한 문제 해결에 적합하다. 트리 삭제, 표현식 평가, 디렉토리 크기 계산과 같은 작업에서 후위 순회의 특성이 자연스럽게 활용된다. 재귀적 구현이 가장 직관적이지만, 스택을 사용한 반복적 구현이나 모리스 순회와 같은 고급 기법을 통해 성능과 공간 효율성을 개선할 수 있다. 각 구현 방법은 상황에 따라 장단점이 있으므로, 문제의 성격과 제약 조건을 고려하여 적절한 방법을 선택해야 한다. ...

December 6, 2024 · 18 min · Me

CSR vs SSR

CSR (Client Side Rendering) vs. SSR (Server Side Rendering) 비교 항목 Client Side Rendering (CSR) Server Side Rendering (SSR) 렌더링 방식 브라우저에서 JavaScript를 실행하여 콘텐츠를 렌더링 서버에서 HTML을 생성하여 클라이언트에 전달 초기 로딩 시간 상대적으로 긺 (JavaScript 번들을 모두 다운로드하고 실행해야 함) 상대적으로 빠름 (이미 렌더링된 HTML을 받음) 초기 컨텐츠 표시 빈 페이지 후 로딩 즉시 컨텐츠 표시 서버 부하 낮음 (정적 파일만 제공) 높음 (매 요청마다 HTML 생성) SEO 친화성 낮음 (JavaScript 실행 전까지 빈 HTML) 높음 (완성된 HTML이 검색 엔진에 제공) 상호작용성 높음 상대적으로 낮음 후속 페이지 로딩 빠름 각 요청마다 서버 처리 필요 Time to First Paint (TFP) 느림 빠름 Time to Interactive (TTI) JavaScript 로드 후 빠름 JavaScript 로드 필요시 추가 시간 소요 메모리 사용량 클라이언트 측 높음 서버 측 높음 사용자 경험 초기 로딩 후 빠른 페이지 전환 페이지 전환마다 서버 요청 필요 캐싱 전략 JavaScript 파일과 정적 자원 캐싱 용이 동적 HTML 캐싱이 복잡할 수 있음 개발 복잡도 상대적으로 단순 (단일 JavaScript 애플리케이션) 상대적으로 복잡 (서버와 클라이언트 로직 모두 관리) 보안 중요 로직이 클라이언트에 노출될 수 있음 중요 로직을 서버에서 처리하여 안전 오프라인 기능 구현 용이 제한적 데이터 업데이트 실시간 업데이트 용이 페이지 새로고침 필요 대역폭 사용 초기에 높음, 이후 낮음 지속적으로 중간 수준 서버 인프라 요구사항 낮음 (정적 호스팅 가능) 높음 (동적 서버 필요) 리소스 사용 클라이언트 리소스 많이 사용 서버 리소스 많이 사용 데이터 업데이트 실시간 업데이트 용이 페이지 새로고침 필요할 수 있음 적합한 사용 사례 대시보드, SPA, 관리자 패널 블로그, 뉴스 사이트, 전자상거래 프레임워크 예시 React, Vue, Angular Next.js, Nuxt.js, Angular Universal 유지보수성 프론트엔드 중심 유지보수 프론트엔드와 백엔드 모두 유지보수 필요 이 두 방식은 각각의 장단점이 있으며, 최근에는 이들의 장점을 결합한 하이브리드 렌더링 방식(예: Next.js의 정적 생성과 서버 사이드 렌더링 조합)이 많이 사용되고 있다. 프로젝트의 요구사항과 특성에 따라 적절한 렌더링 방식을 선택하는 것이 중요하다. ...

December 2, 2024 · 2 min · Me