목록공부합시다 (99)
공부혜옹
분해합 성공출처다국어분류 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 2 초 192 MB 27085 13530 11075 49.270% 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답..
블랙잭 성공출처다국어분류 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 35302 14876 12046 42.034% 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임..
Rest Parameter란? Rest 파라미터(Rest Parameter, 나머지 매개변수)는 매개변수 이름 앞에 세개의 점 ... 을 붙여서 정의한 매개변수를 의미한다. Rest 파라미터는 함수에 전달된 인자(argument)들의 목록을 배열로 전달받는다. function example(a,b,...rest) { console.log(Array.isArray(rest)); // true console.log(rest); // [ 3, 4, 5 ], } example(1, 2, 3, 4, 5); 함수의 마지막 파라미터의 앞에 ... 를 붙여 (사용자가 제공한) 모든 나머지 인수를 자바스크립트 배열로 대체한다. 마지막 파라미터만 Rest Parameter가 될 수 있다. function example (..
Java, C++과 같은 클래스기반 언어들은 객체 생성 이전에 클래스를 정의하고 이를 통해 객체(인스턴스)를 생성한다. 이와달리 자바스크립트는 프로토타입 기반 객체지향 프로그래밍 언어이다. 따라서 프로토타입을 잘 이해하는 것이 중요하다. (ES6 에서 Class문법이 추가 되었지만 우리가 흔히 아는 class가 아닌 prototype을 기반으로 만들어졌다) 객체생성원리 객체는 생성자를 통해 생성된다. 생성자는 새로 생성된 객체를 초기화 하는 역할을 한다. 정해진틀을(생성자 함수) 기계에 넣어(new 연산자) 여러개 찍어낸다고 이해하면 편리하다. function Example() {}; //생성자 함수 var obj1 = new Example(); //생성자 함수를 이용해 생성한 객체1 var obj2 =..
나는 Java를 먼저 배워서 JS에서의 this또한 당연히 Java와 같겠거니 생각했었다. 때문에 이부분의 개념은 넘어가도 되겠거니 했으나...크나큰 착각이었다. Java에서의 this Java에서의 this는 객체 자신(self)을 가리키는 참조변수로, this가 객체 자신에 대한 참조 값을 가지고 있다는 뜻이다. 주로 매개변수와 객체 자신이 가지고 있는 멤버변수명이 같을 경우 이를 구분하기 위해서 사용된다. public Class Car { private String name; // a public Person(String name) { //b this.name = name; //this.a = b; } } JavaScript에서의 this 자바스크립트의 경우 함수 호출 방식에 의해 this에 바인딩..
ES6의 화살표 함수(Arrow function)는 function 키워드 대신 화살표(=>)를 사용하여 보다 간략하게 함수를 선언할 수 있다 화살표함수 작성 방법 매개변수 지정 매개변수가 없을 경우 () => { ... } 매개변수가 한개인경우 소괄호를 생략할 수 있다. x => { ... } 매개변수가 여러 개인 경우 소괄호를 생략할 수 없다. (x, y) => { ... } 함수 몸체 지정 single line인 경우 함수가 한줄이라면 중괄호 생략가능 암묵적으로 return x => { return 2 + x } x => 2 + x multi line인 경우 () => { const x = 5; return 2 + x; }; ES6 코드 사용 사례 & 효과 일반적인 함수 표현식보다 표현이 간결하다...
ES6는 템플릿 리터럴(Template literal)이라고 불리는 새로운 문자열 표기법을 도입하였다.일반적으로 문자작성시 ''(작은 따옴표) 혹은 ""(큰 따옴표)를 사용하였으나 ES6에선 `` (백틱 문자)를 사용한다. 템플릿 리터럴 (Template literal) 문자열내의 공백을 있는 그대로 제공한다 작은 따옴표와 큰따옴표를 혼용할 수 있다 문자열 인터폴레이션을 제공한다 const tip = `템플릿 리터럴은 '작은 따옴표'과 "큰 따옴표"를 혼용할 수 있다.`; 문자열 인터폴레이션(String Interpolation) 템플릿 리터럴은 + 연산자를 사용하지 않아도 간단한 방법으로 새로운 문자열을 삽입할 수 있는 기능을 제공한다 ${표현식} const name = 'hyewon'; // ES5 ..
let & const 대부분의 프로그래밍 언어는 블록 레벨 스코프(Block-level scope)를 따르지만 자바스크립트는 함수 레벨 스코프(Function-level scope)를 따른다. 함수 레벨 스코프(Function-level scope) 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다. 블록 레벨 스코프(Block-level scope) 모든 코드 블록(함수, if 문, for 문, while 문, try/catch 문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다. let과 const 키워드 도입배경 사용이 편리하다는 장점이 있지만 전역 변수는 유..