본문 바로가기

Javascript/DSA

Dictionary Data Structure Dictionaries ? 데이터를 Key 와 Value 쌍으로 저장하는 자료구조 ADT (Abstract Data Type) Method Name contents add(key, value) 데이터 추가 remove(key) 데이터 삭제 has(key) 존재 여부 get(key) 데이터 호출 clear() 초기화 size() 크기 keys() 키값들 values() 데이터 값들 구현 //ES6 class Dictionary { constructor() { this.store = [] } append(key, value) { this.store[key] = value } get(key) { return this.has(key) ? this.store[key] : undefined } remove(key).. 더보기
HashTable Data Structure About HashTable 데이터를 단시간에 삽입하거나 저장된 데이터를 가져올 때 주로 사용하는 기법이다. Hash Table 이라는 자료 구조를 이용한다. 최대값이나 최소값 같은 전체를 탐색하는 방식에 조회에는 효율이 떨어진다. 해시함수를 통해 생성된 벨류값 이 같을때 이를 collision (충돌) 이라 한다. Collision 핸들링 기법 open-addressing (개방주소 = 선형조사) separate chaining (분리된 체인) 해싱 알고리즘의 핵심은 해싱을 생성하는 해시 생성 함수에 담겨져 있다. 해시생성 함수는 문자열을 입력받아 charCodeAt() 을 통해 넘어온 문자열을 ASCII 값으로 전환하고 여기에 상수값 37을 곱하여 누적합을 구한뒤 문자열 길이로 나머지를 구한다. 책에.. 더보기
List Data Structure 자바 스크립트에서 리스트는 Array에 있는 프로퍼티를 기준으로 구현이 가능하다. 리스트 클래스를 생성하기에 앞서 개념적인 부분을 정리하고자 한다 ADT란 무엇일까? Abstrat Data Type 추상적 자료형(Abstract Data Type, 줄여서 ADT)은 컴퓨터 과학에서 자료들과 그 자료들에 대한 연산들을 명기한 것이다. 추상적 자료형은 구현 방법을 명시하고 있지 않다는 점에서 자료 구조와 다르다. 비슷한 개념의 추상적 자료 구조는 각 연산의 시간 복잡도를 명기하고 있지만 추상적 자료형에서는 이것조차 명기하지 않는다. -위키백과 자료에 대한 연산은 질의를 던지는것과 자료를 변경하기 위한 연산으로 나뉜다. 1.질의를 던지는것 pos() 현재 위치 length() 리스트의 요소 수 반환 toStr.. 더보기
Array essential with ES6 -2- 포스팅이 늦었습니다. 그간 실제 저희 스터디에 진도는 스택까지 나갔습니다. 기존에 알고리즘에 대한 지식이 있는 분들로 구성이 되어 있기때문에 이책의 부족함을 곳곳에서 찾아낼수 있었고 연습문제에서는 실제 원서1와 그 의미가 다른 문제들 그리고 원서엔 나와있지만 번역서엔 나와있지 않은 추가 문제들에 대해서 스터디장이 다시 번역을 해서 올려놓고, 그것을 풀어 나가는 식으로 진행 하고 있습니다. 연습문제 를 풀고 서로의 코드리뷰 안에서 배워나갈점이 있고 새로운것들이 도출되어 스터디에 의미는 있지만 이책은 어느 해외 독자가 남긴 리뷰 대로 기초가 없다면 한번쯤은 볼만 합니다. 하지만, 기준으로 삼기엔 부족한감이 있습니다. 그래서 책과 다른 내용들이 존재할수 있는데 , 이부분은 제가 생각했거나 혹은 스터디에서 나온.. 더보기
Array essential with ES6 -1- 소스코드 중간중간에 ES6 문법이 적용되어 있습니다. 예제코드를 실행한 브라우져 환경은 크롬 카나리 입니다.. ES6문법에 대한 설명이 생략된것은 포스팅에 포커스가 스터디에 맞춰져 있기때문입니다. 배열의 생성자 var arr1 = []; var arr2 = new Array(); // [] var arr3 = Array(); //new 연산자 생략가능 var arr4 = new Array(10); //[undefined,undefined,...] 길이가 10인배열 var arr5 = [1,2,3]; //[1,2,3] var arr6 = new Array(2,3); // [2,3] /*생성자 예외*/ var arr1 = [1,2,] // IE8 : [1,2,undefined] other : [1,2] va.. 더보기
Data Structures & Algorithms with JavaScript O'REILLY 에서 나온 책으로 간단한 스터디를 진행하고자 합니다. 초기 발단은 ,리액트 스터디에서 한분이 의견을 주셨고 저도 거기에 적극 동참해서, 기존 스터디의 서브 스터디로 진행하게 되었는데 자바로 입문할당시 면접을 준비하면서, 자료구조나 알고리즘을 공부했지만 현재 자바스크립트를 주력언어로 쓰는만큼 자바스크립트로 된 자료구조를 한번쯤 공부해야된다는 막연한 생각이 있었습니다. 그래서 이번기회에 이책을 기준으로 스터디를 진행하게 된것이고 디자인 패턴은 진행할지 모르겠지만, 순차적으로 디자인패턴에대해서도 개별 공부할 계획에 있습니다. 책의 서평을 보니 오역이랑 예제에 대한 검증이 되어있지않다는 이야기가 있지만, 기본적으로 자바에대한 알고리즘 지식이 있기 때문에 진행하는데 있어 큰문제는 없어 보입니다. .. 더보기