본문 바로가기

전체 글69

안드로이드 문서 뷰어 만들면서 겪은 4가지 삽질 — DocOpen 개발 회고 개발 회고 Android DocOpen Asset Pack AI 활용안드로이드 문서 뷰어 만들면서 겪은 4가지 삽질— DocOpen 개발 회고처음엔 단순했다. “전면 광고 없이, 문서만 바로 열리는 앱을 만들자.” 그런데 실제로는 LibreOffice 빌드, AAB 용량 제한, on-demand Asset Pack, 16KB 페이지 크기 정책, 그리고 AI 활용의 한계까지 마주하게 됐다.이 글에서 다루는 것1. 왜 DocOpen을 만들었는지2. HWP/HWPX와 Office 문서 처리3. LibreOffice Android 빌드4. Asset Pack과 bundletool5. 16KB 페이지 크기 정책6. AI는 만능이 아니었다왜 만들게 됐나안드로이드 폰을 쓰다 보면 문서 파일을 열어야 할 일이 종종 생.. 2026. 5. 11.
이진 트리 / 이진 탐색 트리 / 완전 이진 트리 / 힙 / 완전 이진 탐색 트리 트리 자료구조를 배우다 보면 비슷한 이름 때문에 이런 혼란이 생긴다.이진 트리랑 이진 탐색 트리는 뭐가 다르지?힙도 이진 트리라는데 왜 BST는 아니지?“완전”이라는 말은 구조를 말하는 건가, 규칙을 말하는 건가?이 글에서는 트리를 두 가지 기준으로 나눠서 설명한다.구조(모양)값의 규칙(정렬 조건) 이 기준만 잡으면 다 헷갈림이 사라진다.이진 트리 (Binary Tree)정의이진 트리란각 노드가 최대 두 개의 자식 노드를 가질 수 있는 트리왼쪽 자식 ≤ 1오른쪽 자식 ≤ 1값의 크기 규칙 없음핵심 포인트가장 기본 개념“이진”은 자식 수 제한만 의미정렬, 탐색 성능 보장하지 않음이진 트리는 틀(컨테이너) 에 가깝다.이진 탐색 트리 (BST, Binary Search Tree)정의이진 탐색 트리(BST) 는.. 2026. 1. 1.
공간 복잡도 (Space Complexity) 공간 복잡도란입력 크기 n에 따라 알고리즘이 실행되는 동안추가로 필요로 하는 모든 메모리의 증가량 공간 복잡도에 포함되는 것들n에 따라 달라지는 보조 배열병합 정렬의 temp 배열재귀 호출 스택퀵 정렬, 병합 정렬재귀 호출 스택에는 지역 변수, 리턴 주소, 스택 프레임 등이 포함되어 이게 공간 사용을 증가 시킨다.동적 자료구조힙, 큐, 스택, 맵 등임시 변수 중 n에 비례하는 것공간 복잡도에 포함되지 않 것들 입력 데이터 자체상수 개수의 변수 (int a, b)하드웨어 캐시, 레지스터언어/런타임이 내부적으로 쓰는 메모리 병합 정렬보조 배열 크기: n재귀 깊이: log n 공간 복잡도 = O(n) (※ O(n + log n)이지만 큰 항만 남김)퀵 정렬추가 배열 없음재귀 깊이:평균: log n최악: n 공.. 2025. 12. 25.
비비교 정렬 vs 비교 정렬 비비교 정렬(non-comparison sort) 이란원소끼리 같은 크기 비교를 하지 않고 정렬하는 방식이다. 예)기수 정렬계수 정렬버킷 정렬특징 비교 없음조건만 맞으면 O(n) 가능비교 정렬(comparison sort) 이란오직 두 원소끼리 같은 크기 비교를 하는 정렬하는 방식이다. 예)선택 정렬삽입 정렬병합 정렬퀵 정렬힙 정렬특징반드시 “두 값을 비교”이론적 하한선: O(n log n)비교 정렬의 시간 복잡도 하한이 O(n log n)인 이유비교 정렬은 “비교 결과만으로 정렬 상태를 구분”해야 하고,가능한 경우의 수가 n!개이기 때문에이를 구분하려면 최소 O(n log n)번의 비교가 필요하다. 핵심 모델: 결정 트리(Decision Tree)비교 정렬은 이론적으로결정 트리(Decision Tr.. 2025. 12. 25.