본문 바로가기

양털의 개발 블로그52

(191201) 알고리즘 - 버블 정렬 (Bubble sort) 버블 정렬 (Bubble sort) - 오름차순 기준 버블 정렬 알고리즘은 서로 인접한 두 원소를 검사하여 정렬하는 알고리즘이다. 예를 들어 [9,4,7,1,2] 라는 배열이 있다고 가정해서 버블 정렬이 어떻게 되는지 알아 보았다. [1] 1. 배열의 첫번째 원소인 9와 그 다음 두번째 원소인 4를 비교한다. 9는 4보다 크기 때문에 9와 4의 자리를 교환한다. [4,9,7,1,2] 2. 그 다음 배열의 두번째 원소와 세번째 원소를 비교한다. 9는 7보다 크기 때문에 9와 7을 교환한다. [4,7,9,1,2] 3. 그 다음도 마찬가지로 진행한다. [4,7,1,9,2] [4,7,1,2,9] 4. 마지막 원소는 그 다음 원소가 없기 때문에 첫번째 순회 종료 [2] 1. 다시 배열의 처음 원소부터 [1]번의 .. 2019. 12. 1.
(191128) Instantiation & Inheritance (2) - prototype, __proto__, constructor의 관계와 프로토 타입 체인 정리 - Object.create() 정리 - ES6의 Class 키워드와 super 키워드 정리 및 psedoclassical 과의 비교를 통한 프로토타입 체인 정리 Object.create Object.create 메소드는 인자로 받은 객체를 프로토타입 객체로하는 새로운 객체를 만드는 메소드 이다. (MDN 참고) let temp = { first : "hi" } 위의 temp 는 객체로 first를 프로퍼티로 갖고 있다. 그리고 객체이기 때문에 __proto__를 갖고있고 이것은 최상위인 Object의 프로토타입을 가리키고 있다. 여기에서 새로운 객체를 Object.creat를 통해 만들어 보겠다. let o.. 2019. 11. 28.
(191127) Instantiation & Inheritance (1) - prototype, __proto__, constructor의 관계와 프로토 타입 체인 정리 - Object.create() 정리 - ES6의 Class 키워드와 super 키워드 정리 및 psedoclassical 과의 비교를 통한 프로토타입 체인 정리 Instantiation patterns class(blueprint)로부터 instance를 만드는 것 (비유를 하자면 붕어빵 찍는 기계에서 붕어빵을 찍어낸다고 생각!!) 4가지 패턴이 있다 1. functional 객체 안에 프로퍼티와 메소드를 객체의 키값 형태로 직접 만듬 2. functional shared 객체 안에 프로퍼티를 만드는 방법은 동일하지만 메소드는 함수 밖에 임의의 메소드만 담을 객체를 만들고 인스턴스를 만들 때마다 메소드를 담.. 2019. 11. 27.
(191120) - 자료구조 Hash Table Hash Table 해시테이블은 내부적으로 배열을 사용하여 데이터를 저장을 하기 때문에 특정한 값을 탐색하거나 추출할 때, 데이터의 삭제나 추가시에 시간복잡도가 평균적으로 O(1)이 나온다. 이는 해시 테이블이 데이터 고유의 index를 사용하여 바로 접근하기 때문이다. (평균적으로 O(1) 이고 O(N)이 나올 수도 있는데 조금 있다가 설명) 구성 해시 테이블은 기본적으로 키(key), 해시 함수(hash function), 해시(hash), 값(value), 저장소(bucket) 으로 이루어져 있다. 키(key) : 해시 함수의 input이다. 다양한 길이의 값일 수 있다. 해시 함수(hash function) : 키를 해시로 바꿔주는 역할을 한다. 다양한 길이를 가지고 있는 키를 input으로 받아.. 2019. 11. 20.
(191119) 시간복잡도 (Time Complexity) 알고리즘 (Algorithm) 어떤 목적을 달성하거나 결과물을 만들어내기 위해 거쳐야하는 일련의 과정들을 의미 즉, 한 문제를 해결할 때 같은 결과를 내더라도 여러 알고리즘이 사용될 수 있다. 알고리즘은 각기 다른 모양과 형태를 갖고 있고, 개발자들은 문제를 해결할때 최대한 효율적으로 시간과 공간(메모리)를 사용하고 싶어 하기에 쓰인 알고리즘의 수행 시간과 메모리 사용량을 평가하여 최대한 걸리는 시간과 메모리를 적게 쓰려고 한다. 복잡도 (Complexity) 알고리즘의 수행 시간과 메모리 사용량을 평가하기 위해서 복잡도라는 개념을 사용한다. - 시간 복잡도 (Time complexity) 알고리즘의 수행 시간 분석 결과 - 공간 복잡도 (Space complexity) 알고리즘의 메모리 사용량에 대한 .. 2019. 11. 20.
(191118) 자료구조 - 이진 탐색 트리 이진 탐색 트리 (Binary Search Tree) 특징 - 기본적으로 이진 트리이므로 각 노드는 최대 2개의 자식만을 갖는다 (0~2개) - 모든 노드의 값은 유일하다 (중복된 값이 없다) - 좌측 하위트리의 값은 상위 노드(부모노드)의 값보다 작은 값이어야 한다. - 우측 하위트리의 값은 상위 노드(부모노드)의 값보다 큰 값이어야 한다. - 그리고 하위 트리의 하위 트리들도 같은 특징을 갖는다. 이진 탐색 트리의 탐색 방법 1. 찾고자하는 값을 루트 노드의 값과 비교 한다. 1-1. 비교해서 같으면 루트 노드를 리턴하고 탐색을 마친다. 2. 찾고자하는 값이 루트 노드의 값보다 크다면 루트노드 기준으로 오른쪽의 하위 노드를 기준으로 하여 다시 탐색한다. (1번 과정에서 루트 노드 대신 루트노드의 오른.. 2019. 11. 18.