스택, 큐, 덱은 모두 데이터가 일직선으로 나열되는 선형(Linear) 자료구조입니다. 데이터 사이의 관계가 단순히 앞뒤로만 연결됩니다. 그런데 현실의 데이터는 대부분 이보다 복잡한 구조를 가집니다. 파일 시스템의 폴더 계층, 조직도, HTML DOM, 데이터베이스 인덱스 등 이런 구조들은 상하 관계와 계층이 존재하고 하나의 부모가 여러 자식을 가질 수 있습니다. 트리(Tree)는 바로 이 계층적 관계를 표현하기 위한 비선형(Non-linear) 자료구조입니다. 이 글에서는 트리의 구성 요소와 핵심 용어, 이진 트리의 종류, 그리고 트리를 탐색하는 네 가지 순회 방법을 정리합니다. 1. 트리(Tree)란 무엇인가트리는 노드(Node)와 엣지(Edge)로 구성된 계층적 자료구조입니다. 이름 그대로 나무를 ..
스택과 큐는 순서를 다루는 두 가지 방식입니다. LIFO와 FIFO라는 단순한 규칙이 구조와 활용을 결정합니다. 이번 글에서는 그 차이를 명확하게 정리합니다. 1. 자료구조에서 순서가 중요한 이유배열(Array)이나 리스트(List)는 인덱스를 통해 원하는 위치의 데이터에 자유롭게 접근할 수 있습니다. 데이터를 꺼내는 순서에 아무런 제약이 없습니다. 하지만 현실의 많은 시스템은 데이터를 정해진 순서로만 처리해야 하는 경우가 훨씬 많습니다. 예를 들어 이런 상황들을 생각해볼 수 있습니다.웹 브라우저 뒤로 가기 : 가장 최근에 방문한 페이지로 돌아가야 합니다.텍스트 편집기 Ctrl + Z : 가장 마지막으로 수행한 작업부터 취소됩니다.은행 창구 대기 순서 : 먼저 온 고객이 먼저 처리됩니다.데이터 파이프라인..
데이터가 작을 때는 sort_values()가 금방 끝납니다. 그런데 데이터가 몇 백만 건만 넘어가도 정렬이 체감상 꽤 오래 걸립니다.이때 우리는 보통 이렇게 생각합니다. “데이터가 커서 어쩔 수 없지.” 하지만 정렬은 단순한 데이터 크기 문제가 아니라 알고리즘 + 자료구조 + 연산 구조 문제입니다. 오늘은 정렬 알고리즘이 무엇인지 그리고 대용량 데이터에서 왜 부담이 커지는지 정리해보겠습니다. 1. 정렬이란 무엇인가?정렬은주어진 데이터를 특정 기준에 따라 재배치하는 알고리즘입니다. 정렬 알고리즘은 비교 기반 알고리즘과 비비교 기반 알고리즘으로 나뉘며 대부분의 범용 정렬은 비교 기반 알고리즘을 사용합니다.비교 기반 정렬의 이론적 하한(lower bound)은O(n log n) 즉, 데이터가 n개라면 최소한..
groupby()가 왜 빠를 때는 빠르고 어떤 경우에는 갑자기 느려질까요? 예전에 문자열 컬럼으로 groupby를 했는데 생각보다 오래 걸렸던 적이 있습니다. 데이터가 많아서라고 생각했는데 조금 더 들여다보니 핵심은 해시 구조였습니다. 오늘은 해시테이블(Hash Table)이 무엇인지 그리고 Python dict, Pandas groupby와 어떻게 연결되는지 정리해보겠습니다 1. 해시테이블이란?해시테이블은키(Key)를 해시 함수로 변환해 특정 위치(버킷)에 저장하는 자료구조입니다. 핵심 특징:평균 탐색 시간 O(1)키 기반 접근삽입·삭제 빠름예시:data = {"A": 10, "B": 20} dict에서 특정 키를 찾는 것은 리스트처럼 처음부터 끝까지 탐색하지 않습니다. 해시값을 계산해 바로 해당 위치..
데이터를 다루다 보면 이런 말을 자주 듣습니다. “for문 쓰지 말고 벡터화 연산 쓰세요.”, “NumPy로 바꾸면 훨씬 빨라요.”그런데 왜 빠른 걸까요? 단순히 라이브러리가 잘 만들어져서일까요? 아니면 내부에 다른 구조가 있는 걸까요? 오늘은 배열(Array)과 리스트(List)의 차이를 Pandas 내부 구조와 연결해서 정리해보겠습니다. 1. 배열(Array)이란?배열은같은 타입의 데이터가 연속된 메모리 공간에 저장되는 자료구조입니다. 특징:인덱스 접근 O(1)연속된 메모리 구조고정 크기캐시 효율이 높음예시:import numpy as np arr = np.array([1, 2, 3, 4]) print(arr[2]) 배열은 메모리 상에서 데이터가 붙어 있기 때문에 CPU가 한 번에 읽어오기 좋습니다...
로컬에서는 잘 돌아가던 Pandas 코드가 데이터가 10배 늘어나니까 갑자기 체감 속도가 확 떨어졌던 경험. 그때 처음 느꼈습니다. “아, 이건 코드 문제가 아니라 구조 문제구나.” 오늘은 자료구조 첫 글로 왜 자료구조가 데이터 처리 속도를 결정하는지 정리해보겠습니다. 1. 자료구조란 무엇인가?자료구조(Data Structure)는데이터를 어떻게 저장하고, 관리하고, 접근할 것인가에 대한 구조입니다. 같은 데이터를 다뤄도 저장 방식에 따라 속도와 메모리 사용량이 달라집니다.대표적인 자료구조:배열 (Array)리스트 (List)해시테이블 (Hash Table)트리 (Tree)그래프 (Graph) 2. 같은 작업, 다른 성능예를 들어 “값이 존재하는지 확인”하는 작업을 보겠습니다. (1) 리스트에서 탐색d..
HELLO WORLD
안녕하세요. 데이터로 말하는 분석가 모모입니다.
데이터를 구조화하고 분석하는 과정과 실무에 활용되는 도구 중심의 내용을 기록합니다.