본문 바로가기
반응형

개발9

트리의 구현과 순회는 뭘까? 21.1 도입 계층적 구조의 자료 구조 연결된 두 노드 중 상위에 있는 것이 부모 노드 , 하위는 자식 노드 부모 노드가 같은 두 노드는 형제 노드 부모 노드와 그의 부모들을 통틀어 선조 노드 자식 노드와 그의 자식들을 통틀어 자손 노드 모든 노드의 선조이고, 부모이면 뿌리 노드 , 루트(root) 자식이 하나도 없는 노드는 잎 노드 , 리프(leaf) 트리와 노드 속성 깊이 : 루트에서 어떤 노드까지 도달하기 위해 거쳐야하는 간선의 수 높이 : 트리에서 가장 깊숙히 있는 노드의 깊이 트리의 재귀적 속성 가장 유용하게 쓰이는 이유는 재귀적 속성때문이다. [상위-하위 개념으로 연결된 트리 구조] 에서 ‘탐색형 자료구조(=t)’에서 그 자손들로 구성된 트리를 ‘t’를 루트로 하는 서브트리 라고 한다. 모든 .. 2024. 4. 17.
큐와 스택, 데크는 뭘까? 큐와 스택, 데크 일렬로 늘어선 같은 형태의 자료들을 저장한다. 셋의 차이는 어느 쪽 끝에서 자료를 넣고 뺄 수 있는가 이다. 셋 다 O(1)에 이루어진다. push : 자료를 넣는 것 pop : 자료를 빼는 것 큐 선입선출 가장 먼저 들어간 자료 순으로 빠진다. 줄서기 스택 후입선출 가장 늦게 들어간 것 순으로 빠진다. 컨텍스트 관리 데크 양쪽 끝에서 자료들을 넣고 뺄 수 있다. 스택과 큐를 모두 구현 가능하다. 19.2 큐와 스택, 데크의 구현 연결 리스트 양쪽 끝에서 추가와 삭제를 모두 상수 시간에 할 수 있다. 노드의 할당과 삭제, 포인터를 따라가는데 드는 시간이 걸리기 때문에 가장 효율적이진 않다. 동적 배열 스택은 쉽게 가능하다. 하지만 앞에서 추가와 삭제가 일어나는 것은 동적 배열에서 쉽지 .. 2024. 4. 17.
선형 자료 구조는 뭘까? 18.2 동적 배열 배열을 이용해 만들어낸 별도의 자료 구조이기 때문에 배열의 특징을 그대로 받는다. 원소들은 메모리의 연속된 위치에 저장된다. 캐시의 효율성과 직결되어 중요한 포인트 주어진 위치의 원소를 반환하거나 변경하는 동작을 O(1)에 할 수 있다. O(1)? 시간복잡도 개념에서 상수를 의미한다. 입력에 관계없이 복잡도가 동일하게 유지된다. 동적 배열만의 특징은 아래와 같다. 배열의 크기를 변경하는 resize() 연산이 가능하다. 이 동작을 수행하는 데는 배열의 크기 N에 비례하는 시간이 걸린다. 주어진 원소의 배열의 맨 끝에 추가함으로써 크기를 1 늘리는 append() 연산을 지원한다. 이 동작을 수행하는 데는 상수 시간이 걸린다. 동적 배열의 크기가 바뀌는 과정은 아래와 같다. 새 배열을 .. 2024. 4. 17.
Web font를 subset으로 만들기(feat. python) font tools 커맨드라인 인터페이스로 제공되는 파이썬 라이브러리이다. 폰트 툴즈는 다양한 폰트 조작 기능을 제공하고 있으며, 그 중 폰트 subsetting을 지원하는 도구가 pyftsubset 이다. 설치 python 2.7, 3.4 이후 버전에서 지원한다. $ python --version // 버전 체크 그리고 pip 명령어를 사용해야하기 때문에 pip 설치가 필요하다. mac에서는 기본적으로 python2.7이 설치되어 있고, python3.x을 사용하고 싶다면 pip가 아닌 pip3로 사용해야 한다. 현재 내 컴퓨터는 pyhton3.x이 설치되어 있기 때문에 pip3으로 명령어를 실행했다. $ pip3 install fonttools pyftsubset 설치를 확인한다. $ pyftsubs.. 2024. 4. 15.
728x90
반응형