Javascript 32

(Javascript) 백준 3273번 : 두 수의 합

https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 문제 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 (ai, aj)쌍의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수열의 크기 n이 ..

(Javascript) 백준 2812번 : 크게 만들기

https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000) 둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다. 출력 입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다. 스택을 활용한 그리디 문제. 숫자를 뽑아서 스택에 넣어주면서, 스택의 꼭대기에 있는 값이 넣으려는 값보다 큰 경우 빼준다. ..

모던 자바스크립트 Deep Dive 읽기 - 19장 : 프로토타입

자바스크립트는 프로토타입 기반의 객체지향 프로그래밍 언어이다. 자바스크립트는 프로토타입을 기반으로 상속을 구현하여 불필요한 중복을 제거한다. 생성자 함수를 선언할 때 함수의 prototype 프로퍼티에 메서드를 바인딩시켜서 이를 구현한다. funciton 생성자함수(매개변수) { (...) } 생성자함수.prototype.메서드 = function() { (...) } 프로토타입은 상속을 구현하기 위해 사용된다. 모든 객체는 [[Prototype]]이란 내부 슬롯을 가지며, 이 내부 슬롯의 값은 프로토타입의 참조다. 객체가 생성될 때 프로토타입이 결정되고 이 슬롯에 저장된다. 프로토타입에 접근하기 위해서는 접근자 프로퍼티를 이용한다. 이는 단방향 링크드 리스트로 구현되어야 하는 프로토체인이 순환 참조 같..

Javascript 2022.03.31

모던 자바스크립트 Deep Dive 읽기 - 18장 : 함수와 일급 객체

자바스크립트의 함수는 무명의 리터럴로 생성이 가능하고, 변수나 자료구조에 저장할 수 있으며, 함수의 매개변수가 될 수 있고 반환값으로도 사용할 수 있다. 이러한 객체를 일급 객체라 부른다. 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미이다. 이러한 특징은 함수형 프로그래밍을 가능하게 하는 자바스크립트의 장점 중 하나이다. 함수 객체는 함수 객체 고유의 프로퍼티를 가지고 있다. 먼저 arguments 프로퍼티는 함수 호출 시 전달된 인수들의 정보를 담고 있는 유사 배열 객체이며 함수 내부에서 지역 변수처럼 사용된다. arugments 객체는 선언된 매개변수의 갯수와 상관 없이 전달된 인수의 정보를 가진다. 이를 통해 함수의 인수 개수에 따라 동작을 달리 정의할 수 있다. call..

Javascript 2022.03.31

모던 자바스크립트 Deep Dive 읽기 - 17장 : 생성자 함수에 의한 객체 생성

객체는 객체 리터럴 뿐만 아니라, 생성자 함수에 의해서도 생성이 가능하다. new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 여기서 생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스라 한다. 객체 리터럴에 의한 객체 생성은 직관적이나 동일한 프로퍼티를 같는 객체를 여러개 생성해야 할 때 불편하다. 객체는 고유의 값을 가지고 있어, 객체마다 값이 다를 수 있지만, 메서드는 내용이 동일한 경우가 일반적이다. 이러한 경우에 생성자 함수에 의한 객체 생성 방식은 객체를 생성하기 위한 템플릿처럼 구조가 동일한 객체 여러개를 간편하게 생성할 수 있다. 생성자 함수를 new 연산자와 함께 호출하면 먼저 암묵적으..

Javascript 2022.03.31

모던 자바스크립트 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파일을 만들어서 동일한..

728x90