Skip to main content

Command Palette

Search for a command to run...

Series

[TypeScript] 자료 구조로 담아내기

TypeScript 를 통해 자료 구조를 직접 구현하며 배웁니다.

  1. [TypeScript] 자료 구조로 담아내기. #0

    직접 구현하지 않더라도 내부적으로 많은 자료 구조가 활용되고 있습니다. 예를 들면 컴퓨터 과학에서 배열은 전통적으로 메모리 연속적인 구조를 가집니다. 하지만 일반적으로 고수준 프로그래밍 언어에서 배열 객체는 내부적으로 이러한 구조를 가지지 않습니다. 이는 전통적 배열 구조가 가진 몇몇 단점 때문입니다. 배열의 특정 위치에 새로운 요소를 삽입해야 한다고 합시다. 이때 메모리 연속적인 구조를 유지하기 위해서는 해당 위치 뒤에 존재하는 모든 요소를 ...

    Jan 25, 20252 min read18
    [TypeScript] 자료 구조로 담아내기. #0
  2. [TypeScript] 자료 구조로 담아내기. #1 - 배열

    배열은 임의 접근과 높은 참조 지역성으로 개별 요소에 대한 가장 빠른 접근이 가능한 자료 구조입니다. 이는 메모리상에서 각 요소를 연속적으로 저장하기 때문입니다. 배열의 본질 배열은 실질적으로 순서를 유지하는 메모리 블록 집합의 추상화(집합으로 보는 것도 일종의 추상화)입니다. 이 집합 내의 모든 메모리 블록은 같은 크기(요소 혹은 참조의 크기)를 차지합니다. 이는 간격이 일정하다는 의미와 같겠지요? 이러한 특징이 배열의 알파이자 오메가인 임의...

    Feb 1, 20252 min read20
    [TypeScript] 자료 구조로 담아내기. #1 - 배열
  3. [TypeScript] 자료 구조로 담아내기. #2 - 배열(with. 연산)

    이번 편은 이전 편으로부터 이어집니다. JavaScript의 Array는 매우 많은 연산을 지원합니다. 하지만 지난 편에서 언급했듯 사용할 연산을 제한할 것입니다. 사용할 연산은 아래와 같습니다. 임의의 메모리 위치에 접근하기 임의의 메모리 위치의 데이터 가져오기 임의의 메모리 위치에 데이터 수정하기 할당된 메모리의 논리적 크기 가져오기 할당된 메모리의 논리적 크기 수정하기 위에 나열된 연산은 아래 코드에 대응하시면 됩니다. co...

    Feb 8, 20252 min read20
    [TypeScript] 자료 구조로 담아내기. #2 - 배열(with. 연산)
  4. [TypeScript] 자료 구조로 담아내기. #3 - 배열(with. 경계 검사)

    이번 편은 이전 편으로부터 이어집니다. 배열을 다룰 때 가장 중요한 것은 유효한 메모리 경계를 검사하는 일입니다. 경계 검사를 수행하지 않아 유효하지 않은 위치에서 연산을 수행하게 되면 위험한 결과를 초래할 수 있기 때문입니다. JavaScript와 같은 고수준 언어에서는 인연이 없는 이야기로 들릴 수도 있지만 조금만 알아봅시다. 경계 검사 편의상 배열 연산에 사용되는 인덱스는 모두 정수로 상정합니다. function checkBounds...

    Feb 15, 20251 min read15
    [TypeScript] 자료 구조로 담아내기. #3 - 배열(with. 경계 검사)
  5. [TypeScript] 자료 구조로 담아내기. #4 - 배열(with. 시프트)

    이번 편은 이전 편으로부터 이어집니다. 삽입과 삭제를 수행할 때는 일정 구간을 밀어내거나 당겨오게 됩니다. 이러한 연산을 일반적으로 시프트라 부릅니다. 왼쪽 시프트 function shl(mem: any[], l: number, r: number): void { for(let i = l; i <= r; i++) { mem[i - 1] = mem[i]; } } 왼쪽 시프트는 지정된 메모리 mem 중 l과 r로 지정된 범위를 왼쪽으로 한...

    Feb 22, 20252 min read17
    [TypeScript] 자료 구조로 담아내기. #4 - 배열(with. 시프트)
  6. [TypeScript] 자료 구조로 담아내기. #5 - 배열(with. 선형 탐색)

    이번 편은 이전 편으로부터 이어집니다. 배열에서 원하는 요소의 위치를 찾아내기 위해서는 어떻게 해야 할까요? 이런 상황에서 사용하는 연산을 탐색이라고 합니다. 선형 탐색 선형 탐색은 가장 단순하게 탐색을 수행하는 방법입니다. 배열의 시작부터 끝까지 목표를 찾을 때까지 순차적으로 탐색을 수행합니다. function linearSearch<T>( l: number, r: number, cmp: (i: number) => bo...

    Mar 1, 20251 min read12
    [TypeScript] 자료 구조로 담아내기. #5 - 배열(with. 선형 탐색)