목록전체 글 (5)
개구리 개발자
인턴십 지원을 위한 과제로 구글 캘린더의 주별보기 화면을 클론 하는 프로젝트를 시작하게 되었다. 솔직히 말하면 처음에는 '그냥 캘린더 UI만 만들면 되겠지'라고 생각했는데, 막상 과제 문서를 자세히 읽어보니 생각보다 복잡했다. Redux를 통한 상태 관리, 반응형 디자인, TypeScript 적용까지 단순해 보이는 캘린더 뒤에 숨어있는 기술적 요구사항들이 만만치 않았다. 하지만 이런 도전이야말로 내가 얼마나 성장했는지 확인할 수 있는 좋은 기회라고 생각했다. 그래서 이번 시리즈에서는 프로젝트를 진행하면서 겪은 모든 과정들을 솔직하게 기록해 보기로 했다. 성공한 부분뿐만 아니라 막혔던 부분, 삽질했던 부분까지 모두 포함해서 말이다. 과제에서 요구하는 기술 스택을 보니 평소 관심이 있었던 것들이 많았다. 먼..

프로그래밍을 배우다 보면, 한 번쯤은 트리 구조를 마주치게 된다. 그리고 그 트리 구조의 입구에는 늘 '이진 트리(Binary Tree)'가 있다. 이진 트리는 단순히 자식 노드를 둘만 가지는 트리라고 배우지만, 그 안에는 탐색, 정렬, 재귀, 메모리 최적화, 알고리즘 설계 등 다양한 문제 해결 전략이 내포되어 있다. 단순하지만 강력하고, 구조적으로 간단하지만 응용 범위는 광범위하다. 이번 글에서는 이진 트리의 기본 개념부터 시작해서 다양한 종류와 구조적 특성, 연산 방식, 그리고 실전에서 어떤 방식으로 활용되는지까지 자연스럽게 풀어보려 한다. 단순한 용어 정리를 넘어서, "왜 이런 구조가 존재하고", "어디에 쓰이는지를" 중심으로 공부해보자.이진 트리란 무엇인가?이진 트리(Binary Tree)는 각 ..

트리는 단순한 노드의 집합이 아니라, 각 노드들이 서로 계층적 관계를 가지며 연결된 복합적인 자료구조이다. 트리 구조를 정확히 이해하기 위해서는 그 안에서 사용되는 주요 용어들을 확실히 알고 넘어가는 것이 중요하다. 이번 글에서는 트리 구조를 설명할 때 반드시 알아야 할 핵심 용어들을 정리하고, 시각 자료를 함께 활용하여 개념을 쉽게 이해할 수 있도록 하였다.1. 루트 (Root)트리에서 부모가 없는 노드를 루트라고 한다.트리에는 단 하나의 루트 노드만 존재한다.루트 노드는 트리 전체의 시작점이며, 일반적으로 레벨 0에 위치한다.예시: 아래 그림에서 3 또는 A가 루트 노드이다.2. 간선 (Edge)노드 간의 연결선을 의미한다.부모 노드와 자식 노드를 잇는 선이며, 트리에서 노드 수가 n개일 때 간선 수..

프로그래밍을 학습하다 보면, 데이터를 구조화하여 저장하고 효율적으로 탐색·수정·삭제할 수 있는 다양한 방식들을 접하게 된다. 그중에서도 Tree(트리)는 복잡한 데이터 간의 관계를 계층적으로 표현하며, 빠른 탐색과 정렬, 분류 작업에 강력한 성능을 발휘하는 중요한 자료구조이다. 이 글은 건국대학교 2025-1학기 자료구조 수업에서 배운 내용을 바탕으로, Tree에 대한 핵심 개념을 정리한 복습 노트이다. 단순한 이론 암기를 넘어서, 코드나 시각 자료를 함께 활용하여 실제 구현과 동작 흐름까지 체감할 수 있도록 구성하였다. 트리의 기본 구조부터 이진 트리(Binary Tree), 이진 탐색 트리(Binary Search Tree), 균형 이진 탐색 트리(Balanced BST), 그리고 AVL 트리까지 다..

2024년 6월, 나는 '피로그래밍 21기'에 지원했다. 정확히는 시험 기간이 끝나가던 시기였고, 컴퓨터공학부로 편입 후 이제 슬슬 학교에 익숙해질 때 즈음, 휴식을 취하고 싶으면서도 동시에 무언가 컴퓨터공학도로서 의미 있는 활동을 시작하고 싶은 시점이었다. 단순히 '웹 프로그래밍 동아리'라는 이유만으로는 설명할 수 없는 끌림이 있었다. 피로그래밍이라는 이름은 우연히 에브리타임 홍보 게시판에서 처음 알게 되었다. '여름 방학에 웹 개발을 몰입적으로 배울 수 있는 곳', '비전공자도 시작할 수 있는 환경', '다양한 사람들과의 협업'이라는 문구들이 유난히 눈에 들어왔다. 당시의 나는 깃허브도 없었던, 개발이란걸 전혀 할 줄 몰랐던 상태였고, 개발을 한 번 해볼까? 그래도 컴퓨터공학부인데.. 정도였다. 그래..