프로그래밍
-
빌트 인 Function 객체JavaScript 2020. 10. 9. 02:30
JS의 함수를 사용하는 방법은 크게 3가지로 나누어진다. Function 객체의 생성자를 호출하여 함수 객체를 생성한 뒤 함수를 사용 함수 선언문을 사용하여 함수를 사용하는 경우 (일반적인 프로그래밍 언어의 함수 선언과 동일) 함수 표현 문을 사용하여 함수를 사용하는 경우 (함수 리터럴 방식으로 작성) 함수 리터럴 이란? 리터럴이란 프로그램의 소스코드 안에서 사용자가 직접 값을 지정하는 방법 또는 값 그 자체를 의미한다. 즉 변수나 계산을 통해 얻어지는 값이 아닌 소스코드로 직접 입력(타이핑) 된 데이터 그 자체를 의미한다. 123 숫자 리터럴 "ABC" 문자(열) 리터럴 {1 : "apple"} 객체 리터럴 function (a, b) { return a + b} 함수 리터럴 EX ) 123 (숫자 리..
-
-
JavaScript 의 Object 종류와 JS의 플랫폼JavaScript 2020. 10. 6. 15:49
JavaScript에서 사용되는 Object 의 종류는 크게 2가지로 다음과 같이 나눌 수 있다. 1. 네이티브 오브젝트 JS 스펙에 정의 되어있는 Object 를 의미한다. Number, String 과 같이 빌트인 된 오브젝트를 포함하는 개념이다. Argument Object 오브젝트 와 같이 JS코드를 실행시에 생성되는 특수한 Object 도 포함한다. 2. 호스트 오브젝트 네이티브 오브젝트와 같이 JS 스펙에 정의 되어있는 Object 가 아닌 모든 것 Window, DOM Object 와 같은 요소들이 존재한다. JS에서 기본적으로 제공되는 객체를 제외하며 JS가 사용 되는 환경 (플랫폼) 에서 제공되는 객체를 의미한다. Host Object는 JS 가 사용되는 환경 (호스트) 에 따라 호스트가..
-
함수 호출구조JavaScript 2020. 10. 5. 15:32
자바스크립트에서의 함수 호출 구조에 대해서 다룰 것 이다. 위의 자료를 보면 이상한 부분이 있을 것 이다. 변수 value에 분명 new String 연산자를 통해 문자열 123을 가지는 값을 할당하고 거기서 다시 String 객체의 toString 매서드를 호출 한 것이다. 왜 자바스크립트에서는 문자열 객체에 문자열로 바꾸어 주는 매서드를 넣어 둔 것일까 ? 라는 의문이 생길 것 이다. 위의 의문을 해결하기 위해서는 자바스크립트가 빌트인 된 객체의 내장 함수(매소드)를 호출 할 때 어떻게 호출하는 구조 인지 이해해야 한다. 자바스크립트는 매소드 호출시 해당 객체의 동일한 Level 의 프로퍼티에서 호출하는 매소드를 찾게 되며 이때 해당 매소드가 없을 경우 해당 Level 의 __proto__ 라는 프로..
-
Built in object 의 생성 (인스턴스)JavaScript 2020. 10. 5. 13:51
자바스크립트에서 Bulit in object 가 어떻게 생성되는지 알아본다. 위의 자료는 변수 value에는 "123" 이라는 문자열을 할당한 것 이다. 살펴보면 value 라는 key에 문자열 123이 값으로 지정 된 것을 볼 수 있다. 아래의 values는 new 연산자를 사용하여 String 오브젝트의 인스턴스를 생성하여 프리미티브 값으로 문자열 123을 할당 한 것이다. [[PrimitiveValue]] : '123' 이와 같이 할당 된 것을 볼 수 있다. 이제 할당한 각 문자열의 길이를 구하기 위해 String Object 의 length 매서드를 호출하였다. 여기서 한 가지 의문이 존재한다. 분명 values 는 new 연산자를 통해 String 객체의 인스턴스를 생성하여 프리미티브 값에 문자..
-
Built-in object 란 ? (인스턴스)JavaScript 2020. 9. 23. 17:48
Built-in object 는 JavaScript 에서 기본적으로 제공하는 객체들 이다. Number, String, Boolean 등과 같은 객체들이 존재하며 new Number ("123") 과 같이 사용할 수 있다. 해당 객체들을 생성자 또는 new 연산자와 같은 것을 사용하여 생성을 하게 되면 객체의 인스턴스가 생성되게 되며 이때 객체의 protoType (프로퍼티, 매서드가 존재함) 가 정의 되어있는 메모리의 주소를 복사하여 인스턴스를 생성하게 된다. 이렇게 복사한 주소에는 prootType 의 프로퍼티, 매서드와 같은 정보가 담겨있는 주소가 있으므로 해당 주소를 참조하여 객체가 제공하는 많은 기능을 사용할 수 있는 구조이다. 위의 자료는 Number 객체가 어떻게 이루어져 있는지를 보여주는 ..
-
백준 2206 (벽 부수고 이동하기)컴퓨터 공학 기초/알고리즘 (BFS, DFS) 2020. 8. 26. 23:32
https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로�� www.acmicpc.net 해당 문제는 N by M 크기의 격자판이 주어지고 해당 격자판에서 N , M의 위치까지 최단거리를 찾는 문제이다. 이때 이동시 지켜야할 규칙이 존재한다. 규칙은 다음과 같다. 맵 밖으로 벗어날 수 없다. 맵에는 벽이 존재하며 벽 1개 까지는 뚫고 갈 수 있다. 이동 방향은 위, 아래, 좌, 우측으로 이동이 가능하다. 여기서 핵심은 벽을 최대 1개까지 뚫고 가면서 이동할..
-
백준 1261 (알고스팟)컴퓨터 공학 기초/알고리즘 (BFS, DFS) 2020. 8. 26. 19:15
https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 해당 문제는 M * N 크기의 미로가 주어지며 (벽은 1 , 빈 공간 0) 해당 미로의 1 by 1 의 위치에서 N M 의 위치 까지 이동한다고 했을 때 가장 적은 수의 벽을 깨고 갈 수 있는 경우에 깬 벽의 횟수를 구하는 문제이다. 일반적인 Queue를 사용한 BFS탐색을 이용할 경우 결국 모든 경우를 모두 순회 해야 함으로 Queue 메모리 초과가 발생한다. 따라서 Deq..