1799번: 비숍 첫째 줄에 체스판의 크기가 주어진다. 체스판의 크기는 10이하의 자연수이다. 둘째 줄부터 아래의 예와 같이 체스판의 각 칸에 비숍을 놓을 수 있는지 없는지에 대한 정보가 체스판 한 줄 단위로 www.acmicpc.net 문제풀이 체스판을 두 개의 체스판으로 나누어 생각하는게 문제의 포인트입니다. 체스판은 하얀색과 검은색, 두 가지 색의 격자로 이루어 져 있습니다. 비숍은 대각선으로만 움직이기 때문에 검은색 자리에선 하얀색 자리에 영향을 줄 수 없기 때문에 나누어 생각하여 시간 복잡도를 현저히 줄일 수 있습니다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().trim().split("\\n"); c..
실행 컨텍스트의 생성과 식별자 검색 과정 전역 객체 생성 평가 이전에 생성되며, 빌트인 전역 프로퍼티, 빌트인 전역 함수, 표준 빌트인 객체가 추가되며 클라이언트 사이드 Web API또는 특정 환경을 위한 호스트 객체가 추가된다. 전역객체도 Object.prototype을 상속받는 프로토타입 체인의 일원이다. 전역 코드 평가 전역 실행 컨텍스트 생성 실행 컨텍스트에 푸시한다. 전역 렉시컬 환경 생성 전역 렉시컬 환경을 생성하고, 전역 실행 컨텍스트에 바인딩 한다. 렉시컬 환경은 환경 레코드와 외부 렉시컬 환경에 대한 참조로 구성된다. 객체 환경 레코드와 선언적 환경 레코드로 구성되어 있다. 객체 환경 레코드 생성 객체 환경 레코드는 var로 선언한 전역 번수, 함수 선언문으로 정의한 전역 함수, 빌트인 ..
ECMAScript 사양은 소스코드를 전역코드, 함수코드, eval코드, 모듈코드로 구분한다. 소스코드의 평가와 실행 모든 소스코드는 실행에 앞서 평가 과정을 거치며, 코드를 실행하기 위한 준비를 한다. 즉 “소스코드의 평가”와 “소스 코드의 실행” 과정으로 나누어 실행한다. 소스 코드 평가과정에서는 실행 컨텍스트를 생성하고 선언문을 실행하여 실행 컨텍스트가 관리하는 스코프에 등록한다. 실행 컨텍스트의 역할 전역 코드 평가 선언문 실행, 스코프에 등록. 전역 코드 실행 런타임 시작. 전역 변수에 값이 할당되고 함수가 호출된다. 함수 코드 평가 매개 변수와 선언문 마찬가지로 먼저 실행. 함수 코드에서는 arguments객체도 지역 스코프에 등록된다, this 바인딩 결정 함수 코드 실행 런타임 시작. 매개..
this this는 자신이 속한 객체 또는 자신이 생성한 인스턴스를 가리키는 자기 참조 변수 this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다. strict mode가 적용된 일반 함수 내부에선 this는 undefined가 바인딩 된다. 일반 함수 내부에선 this를 사용할 필요가 없기 때문이다. 함수 호출 방식과 this 바인딩 일반 함수 호출 기본적으로 this에는 전역 객체가 바인딩 된다. 메서드 호출 메서드를 호출한 객체, 즉 메서드를 호출할 때 마침표(.) 연산자 왼쪽에 기술한 객체가 바인딩 된다. person.getName() 에서 getName()메서드의 this는 person에 바인딩 된다. 메서드 내부의 this는 프로퍼티로 메서드를 가리키고 있는 객체와 관계없고 메서드를 호출..
자바스크립트 객체의 분류 표준 빌트인 객체 ECMAScript 사양에 정의된 객체 전역 객체의 프로퍼티로서 제공 호스트 객체 ECMAScript 사양에는 정의 되어있지 않지만, 브라우저 환경 또는 Node.js 환경에서 추가로 제공하는 객체 브라우저 환경에선 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFram, SVG, Web Storage, Web Component, Web Worker와 같은 클라이언트 사이드 Web API를 호스트로 제공, node.js 환경에서는 고유의 API를 호스트 객체로 제공 사용자 정의 객체 사용자가 직접 정의한 객체 표준 빌트인 객체 표준 빌트인 객체에는 다양한 생성자 함수가 있음 생성자 함수로 생성한 인스턴스의 ..
instanceof 연산자 좌변은 객체를 가리키는 식별자, 우변에는 생성자 함수를 가리키는 식별자를 피연산자로 받는다. 우변이 함수가 아닌 경우 TypeError 불리언 값은 반환받는다 프로토타입의 constructor 프로퍼티가 가리키는 생성자 함수를 찾는게 아니라, 생성자 함수의 prototype에 바인딩딘 객체가 프로토타입 체인 상에 존재하는지 확인하는 것 Constructor에 영향을 받지 않는다. 직접 상속 Object.create에 의한 직접 상속 Object.create메서드는 프로토타입을 지정하여 새로운 객체를 생성한다. new 연산자 없이 객체 생성 가능 프로토타입을 지정하여 객체 생성 가능 객체 리터럴에 의해 생성된 객체도 상속받을 수 있다. 프로토타입 체인의 종점에 위치하는 객체는 O..