본문 바로가기
반응형

분류 전체보기340

[알고리즘] 해싱(Hashing) - 2 해싱(Hashing) - 2 충돌을 해결하는 기법중에 2번째인 open addressing에 대해 알아보자해시 테이블 슬롯에 키는 하나씩만 저장한다.이때 충돌이 일어나면 그 슬롯이아니라 다른 슬롯에 저장해야한다는것을 뜻한다. open addressing은 여러가지 종류가 있는데,1) Linear Probing2) Quardratic Probing3) Double Hashing위의 3 종류가 대표적이다. 먼저 Linear Probing에 대해서 알아보도록 하자 (a)에서는 순서대로 인덱스에 들어가며 충돌이 일어나지 않는다. (b) 에서는 B5가 들어가야하는데 이미 A5가 들어가 있으므로 충돌이 일어나게 된다.여기서 open addressing의 Linear Probing을 수행하는데, 해싱을 했을 때 이미.. 2017. 5. 9.
[알고리즘] 해싱(Hashing) - 1 해싱(Hashing) - 1 해쉬 테이블은 다이나믹 셋을 구현하는 또 다른 방법이다.일반적으로 해쉬 테이블은 탐색, 삽입, 제거 3가지 연산들의 시간 복잡도에 대해 애매한 부분이 있으나적절한 가정하에서 평균적으로 O(1)의 복잡도를 가진다. 보통 최악의 경우에서는 O(n)이 된다.(해싱을 사용하는 경우 정확한 복잡도를 계산하기 어려우므로 가정하게된다.) 해쉬 테이블은 해쉬 함수라는 특별한 함수를 통해 어떤곳에 저장할것인지 지정하는것을 말한다.해쉬테이블은 큰 배열이라고 생각하면된다.위의 그림은 0번지부터 m-1 번째까지, m개의 슬롯을 가지고 있는 해쉬 테이블이다. h : U -> {0,1,2,3,4,5,6... m-1} 라고 할 때 U는 모든 가능한 키들의 집합을 말하며, m은 테이블의 크기를 뜻한다.이.. 2017. 5. 9.
[일상] 이러고 있다. RESTful api 공부해볼겸 노드로 주소록을 만들어보았다.밖에 나가서 운동하고 싶은데 미세먼지 때문에 나가지도 못하고집에서 이러고 있다.빨리 날이 좋아졌으면 좋겠다. 2017. 5. 9.
[Javascript] Jasmine을 이용한 테스트 코드 작성 Jasmine을 이용한 테스트 코드 작성 테스트 주도 개발(TDD)에서 테스트 코드는 가장 중요한 요소로 손꼽힌다.이러한 테스트코드 작성을 도와주기 위한 툴(라이브러리)은 여러개가 있는데그 중 자바스크립트 관련 도서에서 자주 언급되는 자스민(jasmine)을 사용하는 기본적인 방법에 대해 알아보자 1234567891011121314151617181920212223 test Colored by Color Scriptercs 우선 테스트 코드를 사용하기 위한 기본적인 HTML 코드이다.자스민은 다운받은 후 폴더에 추가하여 사용 할 수도 있지만 개인적으로 이렇게 예제 용으로 작성하는것은 CDN을 선호하므로 위와 같이 자스민 코드의 link를 걸어준다.그리고 하단에 테스트를 원하는 js파일과 이에 대한 테스트 .. 2017. 5. 8.
반응형