9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net N-Queen문제 풀이 복습차원에서 적습니다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().trim() const N = +input; let answer = 0; next(0, Array(N).fill(0)) console.log(answer) function next(row,board) { if(row === N){ answer++ return } for(let i=0; i
풀이 방법 dfs를 통한 백트래킹 문제입니다. 코드는 아래와 같습니다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().trim().split("\\n"); const N = +input.shift(); const data = input.map((v) => v.split(" ").map(Number)); const eggsState = data.map((v) => v[0]); let answer = 0; dfs(0, eggsState); console.log(answer); function dfs(index, arr) { //순회를 마치면 탈출 if (index === N) { const count = arr.fil..
1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5×5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net 문제풀이 방법 25명중 무작위로 7명을 뽑습니다. 7명중 4명 이상이 ‘이다솜파’라면 dfs함수를 실행합니다. dfs함수는 무작위로 뽑힌 7명이 인접한 자리에 앉아있는지 확인하는 함수입니다. dfs를 활용하여 인접한지 확인할 수 있습니다. let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().trim().split("\\n") .map((v) => v.split("")); let a..
자바스크립트 객체의 분류 표준 빌트인 객체 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..
프로토타입의 생성 시점 프로토타입은 생성자 함수가 생성되는 시점에 더불어 생성된다. 사용자 정의 생성자 함수 생성자 함수 즉 constructor는 함수 객체를 생성하는 시점에 프로토타입도 더불어 생성된다. non-constructor는 프로토타입이 생성되지 않는다. 함수 선언문은 런타임 이전 JS엔진에 의해 먼저 실행되므로 (호이스팅) 어떤 코드보다 먼저 평가되어 함수 객체가 된다. 이때 프로토타입도 더불어 생성된다. 생성된 프로토타입은 생성자 함수의 prototype 프로퍼티에 바인딩 된다. 빌트인 생성자 함수 모든 빌트인 생성자 함수는 전역 객체가 생성되는 시점에 생성된다. 생성된 프로토타입은 생성된 빌트인 생성자 함수의 prototype 프로퍼티에 바인딩 된다. 객체가 생성되기 이전 생성자 함수와..