본문 바로가기

전체 글25

Unity 개발자를 위한 C# Radix Sort(LSD) 구현 이전 글인 Counting Sort에서는 비교하지 않는 정렬이라는 관점과 함께, 누적합 기반의 Stable(안정 정렬)이 왜 중요한지를 살펴보았습니다. 이 안정성은 단순한 구현 옵션이 아니라, 정렬 결과가 다음 단계에서도 유지되기 위한 전제 조건이었습니다. 그렇다면 자연스럽게 이런 질문이 이어집니다.“값의 범위(K)가 너무 커서 Counting Sort를 그대로 적용하기 어렵다면, 어떻게 정렬을 이어갈 수 있을까?”그 해답이 바로 Radix Sort입니다. Radix Sort는 값 전체를 한 번에 정렬하는 대신, 자릿수별로 정렬을 반복하여 최종 순서를 완성합니다. 이번 글에서는 정수(비음수), 10진수, LSD(Least Significant Digit) 방식의 Radix Sort를 개념 → 예제 → 코.. 2026. 1. 21.
Unity 개발자를 위한 C# Counting Sort(계수 정렬) 구현 이전 글(Heap Sort)에서 정렬 알고리즘의 중요한 공통점을 하나 짚었습니다. Heap Sort, Quick Sort, Merge Sort는 모두 구조와 방식은 달라도 결국 값을 서로 비교(compare)하며 순서를 결정한다는 점입니다. 이 때문에 비교 기반 정렬은 이론적으로 O(N log N)보다 더 빨라질 수 없으며, 알고리즘에 따라서는 최악의 경우 그보다 더 느려질 수도 있습니다. 그렇다면 자연스럽게 이런 질문이 생깁니다. “O(N log N)보다 빠른 정렬은 정말 없는가?”, 이 질문에 대한 대답이 바로 이 글에서 다룰 Counting Sort입니다.해답은 의외로 단순합니다. 비교를 하지 않으면 됩니다. Counting Sort는 원소들끼리 크고 작음을 비교하지 않습니다. 대신 값의 범위라는 .. 2026. 1. 20.
Unity 개발자를 위한 C# Heap Sort(힙 정렬) 구현 이전에 살펴본 Quick Sort는 Pivot을 기준으로 분할(Partition)하면서 정렬을 진행하는 방식이었습니다. 평균은 O(N log N)이지만, Pivot 선택이 나쁘면 최악 O(N2)까지 떨어질 수 있다는 점이 특징이었죠. Heap Sort는 같은 O(N log N) 계열이지만, 접근 방식이 완전히 다릅니다. 분할이 아니라, 힙(Heap) 구조로 “최댓값(또는 최솟값)을 반복적으로 꺼내는 방식”으로 정렬을 완성합니다. 그리고 Quick Sort와 달리, 입력 데이터 형태와 무관하게 항상 O(N log N)을 보장합니다.1. Heap Sort 개요 및 핵심 아이디어Heap Sort(힙 정렬)는 Binary Heap(이진 힙)을 이용하는 비교 기반 정렬입니다. 핵심은 다음 한 문장으로 요약할 수 .. 2026. 1. 19.
Unity 개발자를 위한 C# Quick Sort(퀵 정렬) 구현 이전에 살펴본 Merge Sort는 배열을 분할하여 정렬된 덩어리를 만든 뒤 병합하는 방식이었습니다. 정렬이 병합 단계에서 완성되며, 이를 위해 추가 메모리 O(N)을 사용하는 것이 핵심 특징이었죠. Quick Sort는 같은 O(N log N) 계열의 정렬이지만, 접근 방식은 완전히 다릅니다. 정렬된 결과를 병합해서 만드는 대신, 분할(divide) 과정 자체에서 정렬을 진행합니다. 즉, Merge Sort가 구조를 만든 뒤 합치는 정렬이라면, Quick Sort는 나누는 과정에서 이미 정렬이 진행되는 정렬입니다.1. Quick Sort 개요 및 핵심 아이디어Quick Sort(퀵 정렬)는 Divide and Conquer(분할 정복) 기반의 정렬 알고리즘입니다. 하지만 Merge Sort와 달리, 병.. 2026. 1. 18.
대박 게임 개발 연구소(Daebak Game Dev Lab) 소개 이 블로그는 Unity(유니티) 게임 개발자 관점에서 자료구조(Data Structure)와 알고리즘(Algorithm)을 정리하는 기술 기록 공간입니다. 단순히 정의를 나열하기보다, 실제 개발에서 “왜 필요한지”, “어떤 비용(시간 복잡도, Time Complexity)이 발생하는지”, “Unity에서 어떤 식으로 체감되는지”를 중심으로 설명합니다.1. 이 블로그에서 다루는 방식개념과 핵심 특징을 먼저 정리합니다.구조를 이해하기 위한 흐름/그림(간단한 다이어그램)을 함께 제공합니다.C# 구현을 통해 동작 원리와 비용을 확인합니다.Unity 개발에서 자주 마주치는 사용 맥락(예: 데이터 관리, 상태 관리, 탐색/정렬 등)을 연결해 설명합니다.2. 진행 중인 시리즈현재는 Unity 개발자를 위한 자료구조 .. 2026. 1. 15.
Unity 개발자를 위한 C# Merge Sort(병합 정렬) 구현 지금까지의 정렬 알고리즘은 모두 배열 내부에서 원소를 비교하고 이동시키며 정렬을 완성하는 방식이었습니다. 정렬을 어떻게 만들 것인가에 대한 해법이 “배열 안을 정리하는 것”에 집중되어 있었던 셈입니다. Merge Sort는 이 접근 자체를 바꿉니다. 배열 내부를 계속 조정하는 대신, 배열을 분할하여 정렬된 구조를 먼저 만들고, 그 결과를 병합하여 정렬을 완성합니다. 즉, 정렬을 바라보는 사고 방식이 이동 중심에서 구조 중심으로 전환되는 첫 정렬입니다.1. Merge Sort 개요 및 핵심 아이디어Merge Sort(병합 정렬)는 Divide and Conquer(분할 정복) 방식의 대표적인 정렬입니다. 핵심 아이디어는 다음과 같이 정리할 수 있습니다.Divide: 배열을 반으로 계속 쪼개어 “더 작은 정.. 2026. 1. 15.