Map(=연관 배열, 딕셔너리)이란?여기서 말하는 Map은 자바스크립트가 아닌 일반적인 ADT이다.키-값 형태로 저장되는 ADT.같은 키를 가지는 쌍은 최대 한 개만 존재한다. (같은 값은 여러 개 가능)해시 테이블 or 트리 로 구현할 수 있다.ADT(Abstract Data Type) = 추상 자료형구현 방법은 명시하지 않고, 특성과 작업들에 대해서만 설명하는 자료구조.규칙들의 나열. 해시 테이블이란?배열과 해시 함수를 사용하여 Map을 구현한 자료 구조이다.평균 O(1)의 시간복잡도를 가진다.해시 함수임의의 크기를 가지는 타입의 데이터를, 고정된 크기를 가지는 타입의 데이터로 변환하는 함수.해시 테이블의 해시 함수는 임의 데이터를 정수(해시값)로 변환한다.이 hash값을 유한한 해시 테이블에 저장하..
2024. 01. 26 > 2025. 06. 23 블로그 A/S 프로젝트🚧 로 추가한 글입니다.예시를 다듬고, 오개념을 바로잡습니다. 실행 컨텍스트(execution context)란?어떤 소스코드가 실행되는 단위.함수에 있는 정보, 즉 렉시컬 환경(환경 레코드와 외부 렉시컬 환경에 대한 참조)을 참조!** 환경 레코드 - 식별자와 바인딩된 값이 실행 컨텍스트를 콜스택에 쌓아올린 후 실행하여 코드의 환경과 순서를 보장할 수 있게 된다.실행 컨텍스트는 언제 생성될까?하나의 실행 컨텍스트를 구성할 수 있는 소스코드의 종류는 다음과 같다. 이때 내부 코드는 포함하지 않는다. 그리고 평가 시점에 각각의 컨텍스트가 생성된다.전역함수eval() 함수모듈실행 컨텍스트와 콜스택, 렉시컬 환경var x = 1;cons..
나만의 ESLint 규칙 만들기결과물 eslint-config-ham-javascript개인프로젝트를 위한 커스텀 javascript eslint 설정입니다.. Latest version: 0.0.11, last published: 7 days ago. Start using eslint-config-ham-javascript in your project by running `npm i eslint-config-ham-javascript`. There are no other projwww.npmjs.com 배경ESLint는 문법적인 오류나 안티 패턴을 찾아주기 때문에, 코드의 품질을 향상시킬 수 있다.그러나 매번 작성하는 것은 번거롭다.그렇다고 eslint-config-airbnb 만을 도입하기엔 너무 규..
우선순위 큐 우선순위 큐란? 일반적인 큐(FIFO)와 달리 우선순위가 높은 데이터가 먼저 나가는 자료구조 구현방법 삽입 삭제 배열 O(1) O(N) 링크드리스트 O(1) O(N) 힙 O(logN) O(logN) ⏩️ 우선순위 큐의 삽입, 삭제가 필요할 때는 힙으로 구현하자. 최소 힙 이진트리 구조 모든 부모 노드는 자식 노드보다 값이 작다 최대 힙 이진트리 구조 모든 부모 노드는 자식 노드보다 값이 크다 비겁하지만... 힙이 JS에는 구현이 안되어 있어서 직접 구현해야 한다. 코딩테스트에서 파이썬 사용이 가능하다면 파이썬으로 푸는게 더 유리하다. 파이썬에서는요 import heapq # 힙 배열로 선언 heap = [] # 원소 push heapq.heappush(heap, 1) # 원소 pop cur ..
클로저(Closure)란? 정의 1 “A closure is the combination of a function and the lexical environment within which that function was declared” 클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다. [240130] 렉시컬 환경, 렉시컬 스코프 렉시컬 환경(렉시컬 환경 객체) 이란? 코드블록({...}), function, script를 실행하기 앞서 생성되는 특별한 객체 실행할 스코프 범위 안에 있는 변수와 함수를 프로퍼티로 저장하는 객체 렉시컬 환경 hamo0.tistory.com 함수 makeCounter()를 호출하면 내부 함수 function() { re..
2024. 01. 30 > 2025. 06. 23 블로그 A/S 프로젝트🚧 로 추가한 글입니다.예시를 다듬고, 다양한 상황에서의 this를 알아봅니다.this란?this는 자신이 속한 객체, 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수이다. this가 왜 필요할까?메서드는 자신이 속한 객체의 프로퍼티를 참조하고 변경할 수 있어야 한다. ➡️ 이를 위해 메서드는 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다.생성자 함수 내부에서는 프로퍼티 또는 메서드를 추가하기 위해 자신이 생성할 인스턴스를 참조할 수 있어야 한다. 하지만 생성자 함수를 정의하는 시점은 인스턴스를 생성하기 이전이므로 생성자 함수가 생성할 인스턴스를 가리키는 식별자를 알 수 없다. ➡️ 이를 위해 자신이 생성할 ..