배열은 정렬된 값의 집합이다. 배열 안의 각 값은 원소라고 한다. 각 원소는 배열에서 위치를 가리키는 번호를 배정받는데, 이를 인덱스라고 한다.자스 배열은 타입이 고정되지 않는다. 그리고 배열은 밀집도가 높지 않다. 각 원소의 인덱스가 연속적이지 않아도 되고, 각 원소들 사이에 빈자리가 있어도 된다. 배열 만들기 배열을 만드는 가장 쉬운 방법은 배열 리터럴을 사용하는 것이다. ex) var empty=[]; var misc=[1.1, true, "a"]; 배열 리터럴의 값으로는 상수뿐만 아니라 임의의 표현식도 사용할 수 있다. ex) var a=1; var b=[a, a+1]; 배열 리터럴은 객체 리터럴 또는 다른 배열 리터럴을 포함할 수 있다. 배열 리터럴에서 빠진 부분이 존재할 경우, 해당 부분의 원..
자스의 기본 데이터 타입은 객체다. 객체는 일종의 복합체로, 여러 값들을 묶어 이름으로 저장하고, 값을 가져올 수 있다. 다시 말해 객체는 이름과 값으로 구성된 프로퍼티들의 정렬되지 않은 집합이다. 객체는 문자열과 값이 연결된 집합이라고 할 수 있다. 뿐만 아니라 객체는 객체가 가진 고유 프로퍼티를 유지하는 것 외에 프로토타입이라고 하는 다른 객체의 프로퍼티를 상속받는다. 객체의 메서드들은 일반적으로 상속받은 프로퍼티이고, 이를 프로토타입 상속이라고 한다. 객체는 동적이지만 정적 객체나 정적 타입 언어에서의 구조체처럼 사용할 수도 있다. 객체는 객체 자체를 복사하지 않고 참조한다.(얇은 복사) 객체의 각 프로퍼티는 프로퍼티 속성이라고 하는 연관된 값을 갖는다. 1. 쓰기 속성은 프로퍼티 값의 수정 가능 ..
자스에서의 구문은 세미콜론(;)으로 끝난다. 표현식은 어떤 값을 생성하기 위해 평가되지만 구문은 어떤 일을 하기 위해 실행된다. 표현문 자스 구문 중에서 가장 간단한 형태는 부수 효과가 있는 표현식이다. 할당문이 이러한 표현문의 주요 항목에 속한다. 표현문의 다른 종류로 함수 호출이 있다. 복합문과 빈 구문 하나의 표현식 안에 여러 표현식을 합칠 때에는 쉼표(,) 연산자를 사용한다. 복합문은 자스 문법에서 하나의 구문이 있어야할 곳에 여러 구문을 사용할 수 있게 한다. 빈 구문은 정 반대다. 선언문 var와 function은 각각 변수와 함수를 선언하는 선언문이다. 이러한 선언문은 각각 변수나 함수 이름 같은 식별자를 정의한다. 선언문에서 정의된 식별자는 프로그램 내에서 사용할 수 있고, 이 식별자를 통..
원시 표현식 가장 간단한 형태의 표현식은 원시 표현식으로 다른 표현식을 포함하지 않은 그 자체다. 자스에서 원시 표현식은 상수나 리터럴 값 또는 특정 언어 키워드들과 변수 참조를 말한다. ex) 1.23 "hello" /pattern/ true false null this 객체와 배열의 초기화 표현식 객체와 배열 초기화 표현식은 말 그대로 새로운 객체나 배열을 값으로 하는 표현식이다. 이들 초기화 표현식은 종종 객체 리터럴과 배열 리터럴이라고 한다. 하지만 일반 리터럴과는 달리, 이들은 원시 표현식이 아니다. 이들 리터럴은 특정 프로퍼티와 원소의 값을 지정하는 수많은 하위 표현식을 포함할 수 있기 때문이다. 배열 리터럴 : [], var matrix=[[1,2],[3,4]]; 객체 리터럴 : var p=..
데이터 타입 : 프로그램 언어로 다룰 수 있는 값의 종류 타입은 크게 원시 타입과 객체 타입으로 나뉜다. 원시 타입 : 숫자, 텍스트의 나열(문자열), 불리언, null, undefined null과 undefined는 원시 값이긴 하지만 하나의 형식으로 봐야 한다. 객체 타입 : 이름과 값을 갖는 프로퍼티의 집합 일반적인 객체는 순서가 없는 값들의 집합이며, 각 값에는 이름이 지정되어 있다. 자바스크립트는 배열이라는 특별한 종류의 객체를 정의한다. 배열은 순서가 있는 값들의 집합이며, 각 값에는 번호(index)가 부여된다. 자바스크립트는 함수라는 특별한 객체를 정의한다. 함수는 실행 코드를 가지고 있는 객체로서, 실행 코드를 수행하고 계산된 값을 반환한다. 생성자 함수 : 새로 생성된 객체를 (new..
문자집합 Unicode 문자 집합을 사용해 작성 대소문자 구분 자바스크립트는 대소문자를 구분한다.(HTML은 대소문자를 구별하지 않는다.) 공백, 개행, 제어 문자 자바스크립트는 프로그램 코드 내에 토큰들 사이에 있는 공백들을 무시한다.(예외) 유니코드 이스케이프 시퀀스 자바스크립트에서는 16비트 유니코드 글자를 표현할 수 있는 일련의 6자리 ASCII 문자열 시퀀스를 정의한다. \u로 시작, 16진수 숫자 네개를 사용 유니코드 정규화 유니코드는 한 문자를 인코딩하는 방법이 하나 이상일 수 있다. ex) é는 유니코드 글자 \u00E9를 사용할 수도 있지만 ASCII 글자 e에 강조 표식인 \u0301을 결합해서 사용 가능 주석 // 한 줄짜리 주석 /* /* 여러 줄짜리 주석 리터럴 리터럴은 프로그램에..
그래프의 이해와 종류 쾨니히스베르크의 다리 문제 모든 다리를 한번씩만 건너서 처음 출발한 장소로 돌아올 수 있는가? 정점 별로 연결된 간선의 수가 모두 짝수여야, 간선을 한번씩만 지나서 처음 출발했던 정점으로 돌아올 수 있다. 무방향 그래프 : 방향성 x 방향 그래프 : 방향성 o 완전 그래프 : 각각의 정점에서 다른 모든 정점을 연결한 그래프 가중치 그래프 : 간선에 가중치 정보를 두어서 그래프를 구성(이동시간) 부분 그래프 : 원 그래프의 일부 정점 및 간선으로 이뤄진 그래프를 뜻한다. 그래프의 집합 표현 그래프 G의 정점 집합 : V(G)={A,B,C,D} 그래프 G의 간선 집합 무방향 E(G)={(A,B),(A,C),(A,D)} 방향 E(g)={,,} 그래프를 구현하는 두 가지 방법 인접 행렬 기..
빠른 탐색을 보이는 해쉬 테이블 AVL 트리는 탐색과 관련하여 매우 만족스러운 성능을 보였다. 하지만 탐색 키의 비교 과정을 거치면서 찾는 대상에 가까워지는 방식이기 때문에, 원하는 바를 단번에 찾아내는 방식이라고 말하기는 어렵다. 이럴 때 도입을 검토할 수 있는 자료구조가 바로 테이블이다. AVL 트리의 탐색 연산 : O(log2 n)의 시간복잡도 테이블의 시간 복잡도 : O(1) 해쉬 함수 : 넓은 범위의 키를 좁은 범위의 키로 변경하는 역할 충돌 : 서론 다른 두 개의 키가 해쉬 함수를 통과하였는데 그 결과가 같은 경우 좋은 해쉬 함수의 조건 : 데이터가 전체 영역에 고루 분포되어 있는 경우 ex) Person.h #ifndef __PERSON_H__ #define __PERSON_H__ #defi..