FrontEnd
[JS] DeepDive(18) 함수와 일급 객체
다음과 같은 조건을 만족하는 객체를 일급 객체라 한다. 1. 무명의 리터럴로 생성할 수 있다. 즉 런타임에 생성이 가능하다. 2. 변수나 자료구조에 저장할 수 있다. 3. 함수의 매개변수에 전달할 수 있다. 4. 함수의 반환값으로 사용할 수 있다. // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. 함수는 객체에 저장할 수 있다. const auxs = { increase, decre..
[JS] 올바른 괄호
괄호가 올바른지 아닌지만 구별하면 되기에 굳이 스택을 사용하지 않고 변수를 활용해보았다 ( 가들어오면 1을 더해주고 )가 오면 -1을 해주었다. 만약 cnt가 음수가 되면 올바른 괄호가 아닌 것이다. function solution(s){ let cnt = 0 for (let el of s) { if (el === '(') cnt +=1 else cnt -= 1 if(cnt < 0) { return false } } return cnt === 0? true: false; }
[JS] 다음 큰 숫자
숫자를 하나씩 키워가면서, 2진수로 바꿔서 1의 개수를 세서 같은 수가 나올때까지 구해주었다! function solution(n) { const cnt_1 = n.toString(2).split("").filter(v => v==="1").length while (true){ n += 1 if (n.toString(2).split("").filter(v => v==="1").length === cnt_1) return n } }
[JS] 땅따먹기
동적계획법을 활용하여 풀 수 있는 문제였다. 쉽게 생각해서 4개짜리 배열을 하나 만들어서 각 단계별로 해당 발판을 밟았을때의 최대 점수를 기록하면 된다. 말로할때는 조금 이해가 안될 수 있는데 예시를 dp를 채워간 과정을 보면 꽤 쉽게 이해할 수 있다! [ 1, 2, 3, 5 ] [ 10, 11, 12, 11 ] [ 16, 15, 13, 13 ] 1번 자리에 도착했다고 생각하면 그 전 단계에서 2,3,4번 자리에서 올 수 있는셈인데 2,3,4번 자리까지 누적된 점수의 가장 큰 값을 저장하면 된다. function solution(land) { const dp = [0,0,0,0] for (const score of land){ const tmp = [...dp] for (let i = 0 ; i < 4 ..
[JS] DeepDive(17) 생성자 함수에 의한 객체 생성
이전에 소개했던 객체 리터럴 방식은 객체를 생성하기위한 가장 일반적이고 간단한 방식이다. 이번에는 객체 리터럴 방식 말고 생성자 함수를 활용하여 객체를 생성하는 방식에 대해 알아보자. Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. // 빈 객체의 생성 const person = new Object(); // 프로퍼티 추가 person.name = 'Lee'; person.sayHello = function () { console.log('Hi! My name is ' + this.name); }; console.log(person); // {name: "Lee", sayHello: f} person.sayHello(); // Hi! My ..
[JS] 멀리뛰기
규칙성을 찾으면 쉽게 해결할 수 있는 문제였다. 칸이 1개라면 -> 1개 칸이 2개라면 -> 2개 칸이 3개라면 -> 3개 칸이 4개라면 -> 5개 .... 규칙성이 피보나치 수열과 같음을 활용해서 해결할 수 있다. function solution(n) { let arr = [1n, 1n, 2n]; for(let i = 3; i