전체 글 251

Malloc Lab을 활용한 Implicit Free List 구현기

COMPUTER SYSTEMS DEEP GUIDEmalloc lab의 mm.c를 교재처럼 읽기이번 글은 malloc lab 구현 회고가 아니라,현재 allocator 코드가 힙을 어떤 규칙으로 읽고 갱신하는지를 함수 단위로 해설하는 공부 글이다.Implicit Free List Boundary Tag First Fit Split Coalesce왜 allocator는 함수 셋보다 메모리 규칙 묶음처럼 읽어야 하는가지금 구현한 allocator는 implicit free list 기반의 비교적 단순한 구조다. 하지만 이 코드만 제대로 읽어도 힙 경계, 블록 레이아웃, 포인터 산술, free 이후 병합, realloc의 비용 같은 시스템 개념이 한 번에 연결된다. 그래서 이 글은 내 코드가 무엇을 하고 있는지..

크래프톤 정글 — Week 6 WIL

이번 주는 C 문제를 많이 풀었다고 적기엔 조금 다르게 남는다.포인터를 어디에 다시 연결해야 하는지, 순회 순서를 왜 그렇게 잡아야 하는지, SQL 한 줄이 실제 파일 저장까지 어떤 단계로 흘러가는지를 계속 설명해야 했다.돌아가기만 하면 됐던 구현이 이번 주에는 자꾸 설명 부족으로 걸렸다.이번 주를 한 줄로 정리하면지난주 WIL이 상태 정의와 실행 구조를 보는 감각을 붙잡는 시간이었다면, 이번 주는 그 감각을 더 작은 포인터 조작과 더 큰 SQL 처리 파이프라인 양쪽에 동시에 써본 주였다. 자료구조 C 실습에서는 연결 리스트, 스택/큐, 이진 트리, 이진 탐색 트리를 한 문제씩 손으로 구현하면서 연결과 순서 제어를 다시 봤고, Mini SQL 프로젝트에서는 개인 공부용 최소 엔진과 팀 결과물을 나란히 놓..

이진 탐색 트리 Q5. 두 개의 스택으로 후위 순회하기

자료구조 C 실습 · 이진 탐색 트리 · Q5이진 탐색 트리 Q5. 두 개의 스택으로 후위 순회하기C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.Section F Binary Search Tree postOrderIterativeS2후위 순회를 두 개의 스택으로 구현해, 한 개 스택 버전보다 직관적으로 푸는 문제다. 첫 번째 스택으로 `루트-오른쪽-왼쪽` 비슷한 순서를 만들고, 두 번째 스택에 뒤집어 담으면 자연스럽게 `왼쪽-오른쪽-루트`가 된다.한눈에 보는 문제 정보원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Stru..

이진 탐색 트리 Q4. 한 개의 스택으로 후위 순회하기

자료구조 C 실습 · 이진 탐색 트리 · Q4이진 탐색 트리 Q4. 한 개의 스택으로 후위 순회하기C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.Section F Binary Search Tree postOrderIterativeS1후위 순회를 한 개의 스택만으로 구현하는 문제다. 후위 순회는 현재 노드를 바로 출력할 수 없어서, 마지막으로 방문한 노드나 오른쪽 서브트리 처리 여부를 같이 기억해야 한다. 그래서 전위/중위보다 구현 난도가 높다.한눈에 보는 문제 정보원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Struct..

이진 탐색 트리 Q3. 반복문으로 전위 순회하기

자료구조 C 실습 · 이진 탐색 트리 · Q3이진 탐색 트리 Q3. 반복문으로 전위 순회하기C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.Section F Binary Search Tree preOrderIterative재귀 대신 스택을 이용해 BST의 전위 순회를 구현하는 문제다. 전위 순회는 '현재-왼쪽-오른쪽' 순서다. 스택에 push할 때는 반대로 오른쪽을 먼저 넣어야 왼쪽이 먼저 처리된다.한눈에 보는 문제 정보원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Structures\Binary_Search_Tree\Q3..

이진 탐색 트리 Q2. 중위 순회하기

자료구조 C 실습 · 이진 탐색 트리 · Q2이진 탐색 트리 Q2. 중위 순회하기C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.Section F Binary Search Tree inOrderTraversalBST를 중위 순회해 오름차순 결과를 출력하는 문제다. BST의 중위 순회가 오름차순이 된다는 사실을 직접 코드로 확인하는 기본 문제다.한눈에 보는 문제 정보원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Structures\Binary_Search_Tree\Q2_F_BST.c대상 함수: inOrderTraversal카..

이진 탐색 트리 Q1. 레벨 순서 순회하기

자료구조 C 실습 · 이진 탐색 트리 · Q1이진 탐색 트리 Q1. 레벨 순서 순회하기C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.Section F Binary Search Tree levelOrderTraversalBST를 위에서 아래로, 같은 깊이에서는 왼쪽에서 오른쪽으로 방문하는 레벨 순서 순회를 구현하는 문제다. 레벨 순서는 재귀보다 큐가 더 자연스럽다. 먼저 들어온 노드를 먼저 꺼내야 같은 층 순서가 보장된다.한눈에 보는 문제 정보원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Structures\Binary_S..

이진 트리 Q8. 증손자가 있는 노드 찾기

자료구조 C 실습 · 이진 트리 · Q8이진 트리 Q8. 증손자가 있는 노드 찾기C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.Section E Binary Tree hasGreatGrandchild어떤 노드가 적어도 한 명 이상의 증손자(great-grandchild)를 가지는지 검사하고, 그런 노드의 값을 출력하는 문제다. 현재 노드 기준으로 깊이 3 아래까지 자식 유무를 확인해야 한다. 결국 '손자의 자식이 존재하는가'를 코드로 풀어쓴 문제다.한눈에 보는 문제 정보원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Str..

이진 트리 Q7. 가장 작은 값 찾기

자료구조 C 실습 · 이진 트리 · Q7이진 트리 Q7. 가장 작은 값 찾기C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.Section E Binary Tree smallestValue일반 이진 트리 전체를 순회해 최솟값을 찾는 문제다. BST가 아니라 일반 트리이므로 왼쪽 끝만 내려가면 안 된다. 결국 모든 노드 값을 훑어 현재 최소와 비교해야 한다.한눈에 보는 문제 정보원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Structures\Binary_Tree\Q7_E_BT.c대상 함수: smallestValue카테고리: ..

이진 트리 Q6. 기준값보다 작은 노드 출력하기

자료구조 C 실습 · 이진 트리 · Q6이진 트리 Q6. 기준값보다 작은 노드 출력하기C 파일 하나를 문제 하나로 보고 정리한 풀이 글이다.이번 글은 함수가 실제로 어떤 연결, 순회, 변환을 수행하는지에 초점을 맞춘다.Section E Binary Tree printSmallerValues트리를 순회하면서 기준값 `m`보다 작은 노드만 출력하는 문제다. 트리가 일반 이진 트리이기 때문에 BST처럼 가지치기를 할 수 없다. 결국 모든 노드를 다 보되, 출력 조건만 걸러야 한다.한눈에 보는 문제 정보원본 파일: C:\Users\cedis\OneDrive\문서\ANTIWORK\WEKK6~~~~~\data_structures_docker\Data-Structures\Binary_Tree\Q6_E_BT.c대상 함..