FrontEnd

    [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

    [JS] DeepDive(15) let,const 키워드와 블록 레벨 스코프

    ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것이었다. var 키워드로 선언된 변수는 다음과 같은 특징이 있다. 이 var라는 놈은 아주 독특한 특징으로 주의를 기울이지 않으면 심각한 문제를 발생시킬 수 있다. var x = 1; var y = 1; var x = 100; //중복을 허락함 var y; //초기화문이 없으면 무시됨 console.log(x); //100 console.log(y); //1 위 예제는 var 키워드로 선언한 x변수와 y변수는 중복 선언되었지만 에러가 발생하지 않는다. 함수 레벨 스코프 var 키워드로 선언한 변수는 오직 함수의 코드 블록만을 지역 변수로 인정한다. 따라서 함수 외부에서 var키워드로 선언한 변수는 오직 코드 블록 내에서 선언하더라..

    [JS] DeepDive(14) 전역변수의 문제점

    전역 변수의 무분별한 사용은 위험한다. 그 이유를 알아보자. 변수는 자신이 선언된 위치에서 생성되고 소멸한다. 전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같다. 하지만 함수 내에서 선언된 지역 변수는 함수의 호출과 종료에 따라 생명주기가 결정된다. 즉, 지역변수의 생명 주기는 함수의 생명 주기와 일치한다. 함수 내부에서 선언된 지역변수는 함수가 생성한 스코프에 등록되며 스코프는 렉시컬 환경이라 불리는 물리적인 실체가 있다고 했다. 따라서 변수는 자신이 등록된 스코프가 소멸될때가지 유효하게 된다. 단, 누군가가 스코프를 참조하고 있다면 그 스코프는 해제되지 않고 생존하게 된다. var x = 'global' function foo() { console.log(x) //? var x = 'local..