프로그래밍
-
Merge Sort (병합 정렬)컴퓨터 공학 기초/알고리즘 ( algorithm ) 2020. 10. 27. 03:19
병합 정렬이란 ? 병합 정렬 (Merge Sort) 은 정렬 알고리즘 중 하나로 분할 정복 알고리즘을 사용한다. 즉 문제를 작은 2개의 문제로 분리하여 분리 된 각각의 작은 문제를 해결하여 해결한 결과를 가지고 원래의 문제를 해결하는 방식이다. 보통의 분할 정복 방법은 순환 호출 (재귀 함수)를 이용하여 구연하게 된다. 병합 정렬 과정 병합 정렬은 다음과 같은 과정으로 수행 된다. 입력 받은 List를 2개의 List로 나눈다. 이때 나누는 횟수는 나누어진 List가 더이상 나누어 질 수 없을때 까지 반복한다. 더 이상 나누어 질 수 없게 된 경우 2개의 List의 각 요소를 비교하여 (큰값, 작은값) 을 새로운 리스트에 옮긴다. 만약 위의 과정에서 2개의 List 중 하나라도 요소가 모두 옮겨져 요소가..
-
getter, setter 함수JavaScript 2020. 10. 21. 18:56
자바스크립트 객체 프로퍼티 종류 자바스크립트에서는 객체의 프로퍼티가 2가지 종류로 나뉘게 된다. 하나는 데이터 프로퍼티이다. 흔히 사용하는 {'apple' : '사과'} 형태와 같이 프로퍼티에 Data Type이 들어가는 형태이다. 다른 하나는 접근자 프로퍼티(accessor property) 라 불리는 새로운 종류의 프로퍼티이다. 접근자 프로퍼티 ( get, set ) 접근자 프로퍼티의 본질은 함수인데, 이 함수는 값을 획득(get)하고 설정(set)하는 역할을 담당한다. 그런데 외부 코드에서는 함수가 아닌 일반적인 프로퍼티처럼 보이게 된다. 즉 접근자 프로퍼티는 내부적으로 Function 객체를 생성하여 호출하며 함수와 동일하게 동작하지만 외부적으로는 프로퍼티 형태로 Key 값을 통해 접근하여 값을 ..
-
Built - in Object 함수JavaScript 2020. 10. 21. 18:24
왜? 빌트인 Object 객체는 유용한 기능을 매소드가 아닌 함수로 지원하는가? 빌트인 Object 객체의 prototype object에 정의되어 있는 요소 (매소드, 프로퍼티) 들은 JS에서 사용하는 모든 객체들이 상속받는다. 따라서 모든 객체들은 빌트인 Object 객체의 매소드, 프로퍼티가 포함이 되어있다. 따라서 빌트인 Object 객체의 prototype object에 정의된 내용이 많으면 많을수록 Object 객체를 상속받는 다른 모든 객체들 또한 사이즈가 커지게 된다. 다음과 같은 단점을 보완하기 위해 빌트인 Object 객체를 유용하게 다룰 수 있는 여러 기능들을 Object 객체의 함수 형태로 지원한다. 따라서 Object 객체의 매소드로 지원되지 않고 객체의 함수로 작성되어 있기 때문..
-
자바스크립트의 특징 (OOP, 스크립트 언어)JavaScript 2020. 10. 20. 22:52
스크립트 언어의 특징 자바스크립트는 ECMA스크립트라고도 불리며 아래와 같다. ECMA스크립트(ECMAScript, 또는 ES[1])란, Ecma International이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어를 말한다. 따라서 ECMA스크립트란 스크립트 언어를 표준화 시키기 위해 만든 명세이다. 따라서 JS는 ECMA스크립트가 가지는 기술 규격에 따라 정의된 표준화된 프로그래밍 언어이다. 스크립트 언어는 C, JAVA 와 같은 컴파일 언어와는 다르게 컴파일 과정을 프로그램을 실행하는 동시에 수행한다. 즉 HTML 문서안에 src 속성에 JS 파일을 작성해두면 HTML 파일이 랜더링 되면서 JS 파일을 찾아 실행 하게 되고, 실행 하게 되는 순간 컴퓨터가 읽을..
-
Array 객체 join(), includes() 매소드 활용JavaScript 2020. 10. 15. 18:10
이번에는 JS의 몇가지 유용한 매소드들에 대해 알아본다. 1. join() 해당 매소드는 호출하는 객체 배열의 각 요소 끝에 매개변수로 입력받은 문자(열)를 추가시켜 문자열로 변환하여 반환 해주는 매소드이다. 이때 가장 마지막 요소의 끝에는 매개변수로 입력받은 문자(열)을 추가하지 않는다. 위의 자료는 join의 활용을 나타내는 자료이다. 특정 문자열이 입력 될때 'q' 라는 문자값을 'e' 라는 문자값으로 모두 바꾸어 주는 replaceAll 이라는 함수를 정의 하였으며 해당 함수의 동작 방식은 다음과 같다. 입력받은 문자열을 split 매소드를 사용하여 target 문자를 기준으로 분리시킨다. 만약 타켓 문자가 'q'일 경우 위와 같이 q를 기준으로 모든 문자열을 분리하여 배열형태로 변환 변환 받은 ..
-
Array 객체 매소드 정리 (ES5)JavaScript 2020. 10. 14. 19:06
ES5 버전부터는 아래의 매소드들이 추가로 제공된다. Array 객체 prototype 정리 indexOf() 지정한 값에 일치하는 요소의 인덱스 반환 lastindexOf() 지정한 값에 일치하는 요소의 마지막 인덱스 반환 forEach() 배열의 요소를 콜백함수의 파라미터로 넘기며 배열 순회 continue, break 와 같이 배열을 순회 중에 멈출 수 없다 every() 반환 값이 false일 때 까지 콜백함수 실행 some() 반환 값이 true일 때 까지 콜백함수 실행 filter() 콜백 함수에서 true를 반환한 요소를 반환 한다. map() 콜백 함수에서 true를 반환한 값을 새로운 배열 형태로 반환 한다. reduce() 콜백 함수의 반환 값을 파라미터 값으로 사용한다. reduceR..
-
Array Property List (prototype)JavaScript 2020. 10. 13. 19:42
Array Prototype 1. constructor() 생성자 함수의 프로퍼티로 constructor이라는 Key로 생성자 함수에 접근할 수 있다. constructor 생성자 함수를 Call 하였더니 testList 변수의 Type 이 object로 변한 것을 볼 수 있다. 이는 Array 객체의 인스턴스라는 것을 나타낸다. 2. unshift() 배열의 첫 번째 Index에 요소를 삽입한다. 위와 같이 unshift 매소드의 매개변수로 넘겨준 자료가 배열의 0번째 요소로 추가되는 것을 확인할 수 있다. 3. concat() 매개변수로 입력된 자료를 합쳐주는 매소드로 String 객체의 concat 매소드와는 다르게 매게 변수로 입력된 자료를 합친 새로운 배열을 반환한다. 위와 같이 매개변수로 4,..
-
Global 오브젝트와 Window 오브젝트JavaScript 2020. 10. 10. 17:22
Global 오브젝트란 ? Global 오브젝트는 일반적으로 HTML 코드의 엘리먼트를 통해 하나만 존재하게 된다. () 즉 HTML 파일에 엘리먼트의 src 속성에 JS 파일을 넣고 해당 JS 파일에 코드를 작성하게 된다. Global 오브젝트는 이때 script 엘리먼트를 통해 하나만 존재하게 됨 으로 scrip 엘리먼트 안에 작성 된 파일을 공유한다. (Global 오브젝트로 작성 된 코드는 모든 파일, 코드에서 공유한다.) Global 오브젝트의 특징 Global 이라는 객체 이름은 존재하지만 실체가 없다. 즉 일반적인 객체는 객체의 이름을 통해 접근하게 되지만 (String.length) Global 오브젝트는 바로 프로퍼티를 통해 접근하게 된다. Global.isNaN() 처럼 객체의 이름을 ..