전체 글 147

모던 자바스크립트 Deep Dive 읽기 - 16장 : 프로퍼티 어트리뷰트

자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다. 프로퍼티의 상태는 값, 갱신 가능 여부, 열거 가능 여부, 재정의 가능 여부를 말한다. 프로퍼티는 데이터 프로퍼티와 접근자 프로퍼티로 구분된다. 데이터 프로퍼티는 일반적인 프로퍼티이며, 접근자 프로퍼티는 자체적으로 값을 가지지 않고 다른 데이터 프로퍼티의 값을 읽거나 저장할 때 사용하는 접근자 함수로 구성된 프로퍼티이다. 프로퍼티 정의란 새로운 프로퍼티를 추가하면서 프로퍼티 어트리뷰트를 정의하거나, 기존 프로퍼티의 어트리뷰트를 재정의하는 것을 말한다. Object.defineProperty 메서드를 사용하면 프로퍼티 어트리뷰트를 정의할 수 있다. https://developer.mozill..

Javascript 2022.03.31

(Javascript) 백준 4358번 : 생태학

https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 문제 생태학에서 나무의 분포도를 측정하는 것은 중요하다. 그러므로 당신은 미국 전역의 나무들이 주어졌을 때, 각 종이 전체에서 몇 %를 차지하는지 구하는 프로그램을 만들어야 한다. 입력 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가..

(Javascript) 백준 1620번 : 나는야 포켓몬 마스터 이다솜

https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 입력 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 물어봐도 괜찮아. 나는 언제든지 질문에 답해줄 준비가 되어있어. 둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 ..

(Javascript) 백준 1966번 : 프린터 큐

https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다..

Javascript(Node.js)로 백준 입력받기

백준에서 Javascript의 입력은 fs.readFileSync를 통해 버퍼를 통째로 읽어온다. 위의 /dev/stdin은 문제 채점시 입력 버퍼가 담겨있는 주소이다. 읽어온 버퍼를 .toString 메서드를 통해 문자열로 파싱하고, 가공해서 사용하면 된다. https://www.acmicpc.net/problem/11382 11382번: 꼬마 정민 첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다. www.acmicpc.net 간단한 문제를 통해 입력을 받아보자. 문제에서 주어지는 입력은 공백을 기준으로 정수 A, B, C가 주어진다. 각자의 데스크탑 환경에서는 백준의 입력 상대주소인 /dev/stdin을 사용할 수 없으므로, txt파일을 만들어서 동일한..

모던 자바스크립트 Deep Dive 읽기 - 15장 : let, const 키워드와 블록 레벨 스코프

ES5까지 변수를 선언할 수 있는 유일한 방법은 var키워드를 사용하는 것이었다. var 키워드는 독특한 특징이 있어 심각한 문제를 발생시킬 수 있다 먼저 var 키워드는 같은 스코프 내에서 중복 선언을 허용한다. 만약 동일한 이름의 변수가 이미 선언되어 있는 걸 모르고 변수를 중복 선언하면서 값까지 할당한다면, 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용이 발생한다. 또한 var 키워드는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. 함수 외부에서 var 키워드로 선언한 변수는, 코드 블록 내에서 선언해도 모두 전역 변수가 된다. 이는 전역 변수를 남발할 가능성을 높이고 의도치 않게 전역 변수가 중복 선언되는 상황을 초래한다. 이러한 var 키워드의 단점을 보안하기 위해 ES6에서는 새로..

Javascript 2022.03.17

모던 자바스크립트 Deep Dive 읽기 - 14장 : 전역 변수의 문제점

전역 변수의 무분별한 사용은 위험하다. 전역 변수를 반드시 사용해야 할 이유를 찾지 못한다면 지역 변수를 사용해야 한다. 전역 변수는 코드 어디서든 참조하고 할당할 수 있다. 따라서 코드의 가독성은 나빠지고 의도치 않게 상태가 변경될 수 있는 위험성도 높아진다. 또한 전역 객체의 생명 주기와 일치하기 때문에 메모리 리소스도 오랜 기간 소비한다. 특히 var 키워드의 경우, 중복 선언을 허용하므로 의도치 않은 재할당이 이뤄질 수 있다. 지역 변수는 전역 변수보다 생명 주기가 짧다. 따라서 상태를 변경할 시간도 짧고 기회도 적다. 이는 오류가 발생할 확률이 작다는 것을 의미한다. 메모리 리소스도 짧은 기간만 소비한다. 전역 변수의 사용을 억제하기 위해서는, 즉시 실행 함수, 네임스페이스 객체, 모듈 패턴 등..

Javascript 2022.03.17

모던 자바스크립트 Deep Dive 읽기 - 13장 : 스코프

자바스크립트의 스코프는 함수의 스코프에 의해 생성되며, 중첩에 의해 계층적인 구조를 가질 수 있다. let 이름 = '엄준식' function 엄() { let 이름 = '엄' let 어떻게 = '동탄' console.log(이름) // 엄 function 준(){ let 이름 = '준' console.log(이름) // 준 function 식() { let 이름 = '식' console.log(이름) //식 console.log(어떻게) //동탄 } 식() } 준() } console.log(이름) // 엄준식 변수를 참조할 때, 자바스크립트 엔진은 스코프 체인을 통해 변수를 참조하는 코드의 스코프부터 시작해서 상위 스코프 방향으로 이동하며 선언된 변수를 검색한다. 자바스크립트의 var 키워드는 오로지..

Javascript 2022.03.16

모던 자바스크립트 Deep Dive 읽기 - 12장 : 함수

함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 스코프, 실행 컨텍스트, 클로저, 생성자 함수에 의한 객체 생성, 메서드, this, 프로토타입 등 자바스크립트의 작동 원리 대부분이 함수와 연관되어 있다. 자바스크립트의 함수는 객체 타입의 값이다. 여러 값들 처럼 함수 또한 리터럴로 생성할 수 있다. const 변수 = funciton 함수이름(매개변수 목록) { retrun 반환값; } 다른 리터럴과 마찬가지로, 함수 리터럴도 평가되어 값을 생성하며, 이 값은 객체다. 즉 함수는 객체다. 자바스크립트에서 함수를 정의하는 방법은 4가지가 있다. function 함수선언문(x) { return x; { const 함수표현식 = function (x) { return x; }; const 생성자함수 = ..

Javascript 2022.03.16

(JAVA) 백준 4948번 : 베르트랑 공준

https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있..

728x90