분류 전체보기 썸네일형 리스트형 Queue Data Structure About Queue Queue는 Stack 다음으로 가장 기초 적인 자료구조 중에 하나이다. First In First Out: 먼저 들어온 데이터가 먼저 나간다. queue 의 사전적인 의미를 찾아보면 (무엇을 기다리는 사람)줄 , 줄을 서서 기다리다. 로 해석된다. 큐는 주로 프로세스나 네트워크사이에서 자료를 주고 받을때 임시적으로 저장 하는 용도에 많이 사용된다. ADT (Abstract Data Type) methodname contents enqueue(s) 데이터 삽입 dequeue() 데이터를 꺼내고 꺼낸값을 리턴 front() 큐의 가장 앞에 있는 데이터 확인 isEmpty() 큐가 비어 있는지 확인 size() 큐의 크기 implementation //큐 class Queue { con.. 더보기 Stack Data Structure About Stack Stack은 단순하고 빠르며 가장 기초적인 자료 구조 이다. Last in First Out : 마지막에 들어온 데이터가 처음으로 나가게 된다. 검은책부터 -> 빨 -> 녹 -> 검 -> 빨 순으로 책을 가져간다고 연상해볼수 있다. ADT (Abstract Data Type) methodname contents push(el) 스택의 마지막 위치에 데이터 삽입 pop() 스택의 마지막 위치 데이터 꺼냄(삭제) peek() 스택의 마지막 위치에 있는 데이터 확인 clear() 스택 데이터 초기화 length() 스택의 크기 implementation //ES6 class Stack { constructor() { this.storage = []; } push(el) { this.sto.. 더보기 LinkedList Data Structure About LinkedList 자바스크립트에서 리스트는 배열로 구현한다. 다른 언어에서 배열은 길이가 정해져 있어 배열에 저장하는 데이터가 가변적이라면 메모리에 낭비 또는 초과를 일으킨다. 이러한 문제를 개선하기위해 LinkedList 를 사용 할수있다. 기차의 형태를 연상하면 이해하기 쉬우며 추가,삭제가 용이 하지만 특정 요소 접근이나 검색은 비효율적이다. LinkedList 는 Node 라는 객체의 집합인데 각 객체간 연결이 되어 있는 방식이기때문에 요소를 참조할뿐 인덱스를 부여받는것이 아니기 때문이다. let arr = ["hello","world","javascript"]; let head = { element: "head" , next: Node1 } let Node1 = { element: ".. 더보기 Tree Data Structure (Binray Search Tree) About Tree 계층적인 데이터를 저장할때 사용한다. ex)회사 조직도 엣지(Edge)로 연결(Connect)된 노드(Node)의 집합(Group)이다. 노드의 분류 Root : 최상위 노드 Parent : 상위 노드 Child : 자식 노드 left : 자식 노드가 없는 노드 More About Binary Search Tree 자식의 노드수가 두개 이하인 트리를 의미한다. BST 는 작은 값을 왼쪽 노드에 큰값을 오른쪽 노드에 저장한다. 구현방법 루트 노드를 current 노드로 설정한다. 삽입할 노드의 값이 current 노드의 값보다 작으면 current 노드를 왼쪽으로 설정한다. 삽입할 노드의 값이 current 노드의 값보다 크다면 6번 과정을 진행한다. current 노드의 왼쪽값이 nu.. 더보기 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을 곱하여 누적합을 구한뒤 문자열 길이로 나머지를 구한다. 책에.. 더보기 naver smartEditor2.8 with javascript(multiple upload, setEditMode) 전직장에서 고객이 원하는 제품을 맞춰서 생산해주는 형태의 (SI) 일을 주로했다. 고객의 다양한 요구를 수용함에따라 네이버 ,다음, 라인, 페이스북, 트위터등.. 정말 많은 오픈소스들을 가져와서 사용했다. 처음엔 새로운 기술을 가져다 쓴다는것이 힘들었지만, 어느순간부터 오픈소스를 신뢰하기 시작하니 모듈이나 API를 쉽게 가져다 쓰기 시작했고 오픈소스 맹신자가 되버린 나를 발견할수 있었다. 회사는 당연하게도 빠른 결과만을원했고 나역시도 결과지향적인 개발자가 되어가고 있었다. 소프트웨어 공학에서 소프트웨어는 프로그램 및 관련문서로 정의되고 있다. 여느 오픈소스건 API 가이드북이 존재했고 네이버역시 존재했지만, 신입 개발자 입장으로서 네이버의 가이드북은 불친절하게 다가왔다. 다중업로드는 결과지향적으로 기능구.. 더보기 List Data Structure 자바 스크립트에서 리스트는 Array에 있는 프로퍼티를 기준으로 구현이 가능하다. 리스트 클래스를 생성하기에 앞서 개념적인 부분을 정리하고자 한다 ADT란 무엇일까? Abstrat Data Type 추상적 자료형(Abstract Data Type, 줄여서 ADT)은 컴퓨터 과학에서 자료들과 그 자료들에 대한 연산들을 명기한 것이다. 추상적 자료형은 구현 방법을 명시하고 있지 않다는 점에서 자료 구조와 다르다. 비슷한 개념의 추상적 자료 구조는 각 연산의 시간 복잡도를 명기하고 있지만 추상적 자료형에서는 이것조차 명기하지 않는다. -위키백과 자료에 대한 연산은 질의를 던지는것과 자료를 변경하기 위한 연산으로 나뉜다. 1.질의를 던지는것 pos() 현재 위치 length() 리스트의 요소 수 반환 toStr.. 더보기 Can't clone git repo on windows when some file names contain asterisk. GIT 은 YOBI 서버를 구축하면서, 본격적으로 이용하기 시작했다. 실제 운영중인 서비스도 GIT 기반(HEROKU) 이고 , GIT 은 요즘 다시 느끼지만 필수이고 대세인것같다. 스터디도 물론 GITHUB 로 운영되고 있다. 우리 스터디엔 스터디장이 정한 룰이 있다. 다음시간에 만날때 코드리뷰를 원하면 파일명에 * 를 붙이는것이다. 스터디원중에 윈도우환경에서 파일명에 *를 포함시키면 클론 오류가 난다는 증상을 호소하는분이 있었는데 나는 맥환경에서 푸쉬를 하고있었기때문에 해당문제가 발생되지 않았다. 가진건 검색능력밖에없는데다 요즘 들어 부쩍 늘어나기 시작한 오지랖을 부려보기로 했다. 5분정도 구글링해보니 이와같은 증상을 호소하는 사람을 찾았고, 답변을 찾았다.http://stackoverflow.com.. 더보기 Array essential with ES6 -2- 포스팅이 늦었습니다. 그간 실제 저희 스터디에 진도는 스택까지 나갔습니다. 기존에 알고리즘에 대한 지식이 있는 분들로 구성이 되어 있기때문에 이책의 부족함을 곳곳에서 찾아낼수 있었고 연습문제에서는 실제 원서1와 그 의미가 다른 문제들 그리고 원서엔 나와있지만 번역서엔 나와있지 않은 추가 문제들에 대해서 스터디장이 다시 번역을 해서 올려놓고, 그것을 풀어 나가는 식으로 진행 하고 있습니다. 연습문제 를 풀고 서로의 코드리뷰 안에서 배워나갈점이 있고 새로운것들이 도출되어 스터디에 의미는 있지만 이책은 어느 해외 독자가 남긴 리뷰 대로 기초가 없다면 한번쯤은 볼만 합니다. 하지만, 기준으로 삼기엔 부족한감이 있습니다. 그래서 책과 다른 내용들이 존재할수 있는데 , 이부분은 제가 생각했거나 혹은 스터디에서 나온.. 더보기 이전 1 2 3 4 5 다음