✔ Day 0: Hello, World!
input으로 문자열을 받았을 때, console에 출력.
function greeting(parameterVariable) {
console.log('Hello, World!');
console.log(parameterVariable)
}
✔ Day 0: Data Types
input으로 데이터 타입이 string인 secondInteger, secondDecimal, secondString을 받았을 때, first변수들에 맞게 형변환을 하고 sum한 결과를 출력.
function performOperation(secondInteger, secondDecimal, secondString) {
const firstInteger = 4;
const firstDecimal = 4.0;
const firstString = 'HackerRank ';
const sumInteger = firstInteger + parseInt(secondInteger);
console.log(sumInteger);
const sumDecimal = firstDecimal + parseFloat(secondDecimal);
console.log(sumDecimal);
const sumString = firstString + secondString;
console.log(sumString);
}
✔ Day 1: Arithmetic Operators
input으로 사각형의 length와 width를 받았을 때, 사각형의 면적과 둘레를 리턴.
function getArea(length, width) {
let area;
// Write your code here
area = length * width;
return area;
}
function getPerimeter(length, width) {
let perimeter;
// Write your code here
perimeter = 2 * (length + width);
return perimeter;
}
✔ Day 1: Functions
함수를 사용해서 팩토리얼한 결과를 리턴.
function factorial(n) {
if (n < 1) {
return 1;
}
return n * factorial(n - 1);
}
//es6 version
const factorial = (n) => (n - 1) > 0 ? n * factorial(n - 1) : 1;
✔ Day 1: Let and Const
constant variable인 PI를 정의하고 r을 입력받아서 원의 넓이와 둘레를 출력.
function main() {
const PI = Math.PI;
function getArea(r) {
let area;
area = PI * Math.pow(r, 2);
return area;
}
function getPerimeter(r) {
let perimeter;
perimeter = 2 * PI * r;
return perimeter;
}
const r = readLine();
// Print the area of the circle:
console.log(getArea(r))
// Print the perimeter of the circle:
console.log(getPerimeter(r))
}
//es6 version
function main() {
const PI = Math.PI;
const getArea = (r) => PI * Math.pow(r, 2)
const getPerimeter = (r) => 2 * PI * r;
const r = readLine();
// Print the area of the circle:
console.log(getArea(r))
// Print the perimeter of the circle:
console.log(getPerimeter(r))
}
✔ Day 2: Conditional Statements: If-Else
score 점수에 따라서 if-else문을 사용하여 성적 리턴.
function getGrade(score) {
let grade;
// Write your code here
if (25 < score && score <= 30) {
grade = "A";
} else if (20 < score && score <= 25) {
grade = "B";
} else if (15 < score && score <= 20) {
grade = "C";
} else if (10 < score && score <= 15) {
grade = "D";
} else if (5 < score && score <= 10) {
grade = "E";
} else {
grade = "F";
}
return grade;
}
//es6 version
function getGrade(score) {
return (0 <= score && score <= 5) ? "F"
: (5 <= score && score <= 10) ? "E"
: (10 <= score && score <= 15) ? "D"
: (15 <= score && score <= 20) ? "C"
: (20 <= score && score <= 25) ? "B"
: (25 <= score && score <= 30) ? "A" : ""
}
✔ Day 2: Conditional Statements: Switch
input으로 문자열 s가 주어지면 첫번째 문자에 따라 알파벳 리턴.
function getLetter(s) {
let letter;
// Write your code here
switch (s.charAt(0)) {
case("a"):
case("e"):
case("i"):
case("o"):
case("u"):
letter = "A";
break;
case("b"):
case("c"):
case("d"):
case("f"):
case("g"):
letter = "B";
break;
case("h"):
case("j"):
case("k"):
case("l"):
case("m"):
letter = "C";
break;
default:
letter = "D";
break;
}
return letter;
}
✔ Day 2: Loops
input으로 문자열 s가 주어지면 각 줄에 모음을 출력한뒤 자음을 출력.
function vowelsAndConsonants(s) {
const v = ["a", "e", "i", "o", "u"];
let vowel = [];
let consonant = [];
for (let i = 0; i < s.length; i++) {
if (v.indexOf(s[i]) > -1) { //v에 s[i]가 없다면 -1 반환
vowel.push(s[i]);
}
else {
consonant.push(s[i]);
}
}
for (let i = 0; i < vowel.length; i++) {
console.log(vowel[i]);
}
for (let i = 0; i < consonant.length; i++) {
console.log(consonant[i]);
}
}
✔ Day 3: Arrays
input으로 배열 nums가 주어지면 배열에서 두번째로 큰 숫자를 리턴.
function getSecondLargest(nums) {
// Complete the function
let firstMax = Math.max.apply(null, nums);
let secondMax;
let removeNum = [];
for (let i = 0; i < nums.length; i++) {
if (nums[i] !== firstMax) {
removeNum.push(nums[i]);
}
}
secondMax = Math.max.apply(null, removeNum);
return secondMax;
}
//es6 version
function getSecondLargest(nums) {
// Complete the function
let firstMax = Math.max.apply(null, nums);
let secondMax;
let removeNum = nums.filter((item) => item !== firstMax);
secondMax = Math.max.apply(null, removeNum);
return secondMax;
}
//prototype version
Array.prototype.secondMax = function () {
const firstMax = Math.max.apply(null, this);
const removeNum = this.filter((item) => item !== firstMax);
return Math.max.apply(null, removeNum);
};
function getSecondLargest(nums) {
// Complete the function
return nums.secondMax();
}
✔ Day 3: Try, Catch, and Finally
input으로 매개변수 s가 주어지는데, s가 문자열이라면 거꾸로 출력한다. s가 문자열이 아니라면 예외메세지를 출력하고 s를 그대로 출력한다.
function reverseString(s) {
try { //에러가 나면 코드의 흐름이 catch로 넘어간다.
let inputArr = s.split("");
inputArr.reverse();
const reverseArr = inputArr.join("");
console.log(reverseArr);
} catch (exception) {
console.log(exception.message);
console.log(s);
}
}
✔ Day 3: Throw
input으로 숫자 a가 주어지면 a의 값에 따라 결과를 리턴한다.
a가 양수라면 YES, a가 0이라면 에러메세지 Zero Error, a가 음수라면 에러메세지 Negative Error 리턴.
function isPositive(a) {
if (a > 0) {
return "YES";
} else if (a === 0) {
throw new Error("Zero Error");
} else {
throw new Error("Negative Error");
}
}
//에러의 종류를 구분할 때 throw사용
✔ Day 4: Create a Rectangle Object
객체를 생성하기 위한 함수를 작성한다. 함수는 가로, 세로, 둘레, 넓이의 속성을 가진다.
function Rectangle(a, b) {
this.length = a;
this.width = b;
this.perimeter = 2 * (a + b);
this.area = a * b;
}
//es6 version
class Rectangle {
constructor(a, b) {
this.length = a;
this.width = b;
this.perimeter = 2 * (a + b);
this.area = a * b;
}
}
✔ Day 4: Count Objects
input으로 여러개의 객체를 가진 배열이 주어지면 객체의 x속성과 y속성이 같은 객체의 개수를 리턴.
function getCount(objects) {
let result = [];
for (let i in objects) {
if (objects[i].x === objects[i].y){
result.push(i);
}
}
return result.length;
}
//es6 version
const getCount = (objects) => {
let result = objects.filter((item) => item.x === item.y);
return result.length;
}
✔ Day 4: Classes
다각형의 각 둘레 길이를 나타내는 배열, 둘레의 총 길이를 리턴하는 메소드 이 두개의 속성을 가진 class를 만든다.
function Polygon(arg) {
this.arg = arg;
this.perimeter = function () {
let perimeter = 0;
for (let i = 0; i < this.arg.length; i++) {
perimeter += this.arg[i];
}
return perimeter;
}
}
//es6 version
class Polygon {
constructor(args) {
this.args = args
}
perimeter() {
let perimeter = 0;
for (let i = 0; i < this.args.length; i++) {
perimeter += this.args[i];
}
return perimeter;
};
}
const rectangle = new Polygon([10, 20, 10, 20]); //60
const square = new Polygon([10, 10, 10, 10]); //40
const pentagon = new Polygon([10, 20, 30, 40, 43]); //143
'Language > Javascript (ES6+)' 카테고리의 다른 글
[ES6] 기본 개념 정리 (0) | 2020.03.08 |
---|