분류 전체보기
Sliding Window, max-consecutive-ones-iii 풀이
문제 https://leetcode.com/problems/max-consecutive-ones-iii/ 조건 이진수 배열 nums 가 주어진다. 정수 k가 주어진다. nums 를 정수 k 번만큼 뒤집을 수 있다. 제약 1
Sliding Window, Maximum Average Subarray 문제 (leet code)
문제 링크 https://leetcode.com/problems/maximum-average-subarray-i 해결 방법 subarray 라는 용어를 보고 sliding window 알고리즘으로 접근해본다. 길이 k 가 고정되어 있으므로, 초기에 윈도우 사이즈만큼 더하며 초기화를 해준다. 초기화 후에 sliding window 를 우측으로 한칸씩 옮기며 모든 window 를 점검하면 끝난다. 소스코드 /** * @param {number[]} nums * @param {number} k * @return {number} */ var findMaxAverage = function (nums, k) { // subarray -> sliding window // init variables to solve s..
Sliding Window 기법 배워보기
Sliding Window 알고리즘이란? 배열 문제를 풀 때, 자주 이용되는 접근법이다. 보통 배열의 부분 배열(subarray)을 구하는 문제로 나온다. 부분 배열이란, [1, 2, 3, 4, 5] 와 같은 배열이 있을 때 [2, 3, 4] 와 같은 배열을 의미한다. [2, 4, 5] 처럼 연속되지 않으면 부분 배열이 아니다. sliding window 풀이 방식을 이용하면, Two pointers 전략과 비슷하게 2개의 포인터를 이용한다. 보통 첫번째 포인터가 시작점 (left bound)이 되고 두번째 포인터가 끝점 (right bound)이 된다. 마치 창문을 옆으로 밀어 이동시키는 것과 비슷하여, sliding window 라고 부른다. 특정 조건을 만족하는 부분 배열 (subarray) 을 구..
웹 개발자를 위한 자바스크립트의 모든 것 2장 let, const 정리
let 과 var 의 공통점 var a; // undefined let b; // undefined 유효한 값으로 초기화하지 않아도 된다. 유효한 값으로 초기화하지 않은 경우 undefined 가 할당된다. 반면 const 는 즉시 초기화하지 않으면 에러가 던져진다. var 가 갖는 가장 큰 문제 var의 문제점 짚기 글에 var 의 문제가 나와있다. 함수 레벨 스코프를 갖는다는 생각보다 큰 영향력을 가진다. 변수 유지 관리를 힘들게 한다. 코드가 내가 작성한 의도와 다르게 동작할 수 있다. 의도와 다르게 동작하는 코드들 function jumpOut() { var a = [1, 2, 3]; for (var i = 0; i < a.length; ++i) { var value = a[i]; console...
var 의 문제점을 짚어보고 let, const 와 비교해보세요.
var 의 문제점과 let, const 와의 비교 함수 레벨 스코프를 갖는다. 루프 내 클로저 문제를 일으킬 수 있다. let 과 const 가 블록 레벨 스코프를 갖는 것과 상반된다. 변수의 중복 선언을 허용한다. 실수로 같은 이름의 변수를 선언하는 문제를 일으킬 수 있다. let 과 const 는 중복된 이름으로 변수 선언 시에 에러가 발생한다. 정의되기 전에 참조가 가능하다. 흔히 말하는 변수 호이스팅 문제를 일으킬 수 있다. let 과 const 도 호이스팅은 일어나지만, 값이 초기화되기 전에는 Temporal Dead Zone 이라는 개념을 사용하여, 접근을 막는다.
array slice 메서드에 대해서 설명해보세요.
array slice 메서드란? slice() 메서드는 Array 의 프로토타입에 있는 메서드입니다. (Array.prototype.slice()) 하나의 인자를 받는 경우 해당 인덱스를 포함한 이후의 원소를 가진 배열을 반환합니다. 두개의 인자를 받는 경우 첫번째 인자 인덱스부터 두번째 인자 인덱스 전까지의 배열을 반환합니다. let arrayIntegers = [1, 2, 3, 4, 5]; let arrayIntegers1 = arrayIntegers.slice(0, 2); // returns [1,2] let arrayIntegers2 = arrayIntegers.slice(2, 3); // returns [3] let arrayIntegers3 = arrayIntegers.slice(4); //r..
JSON 오브젝트에 대해서 설명해보세요.
JSON 오브젝트란? 데이터 포맷 중 하나인 JavaScript Object Notion 을 파싱하기 위한 메서드를 갖고 있는 오브젝트입니다. 대부분의 자바스크립트 글로벌 오브젝트는 생성자가 있는 반면에 JSON 오브젝트는 생성자가 없습니다. JSON 의 모든 메서드는 static 메서드입니다. JSON 문자열 형태는 네트워크 통신에 많이 이용되며, 파일로 떨어지는 경우 .json 확장자를 갖고, HTTP 통신에서는 application/json 형태의 MIME type 을 사용합니다. JSON.stringify() 메서드의 이름이 역할을 설명하고 있습니다. JSON 을 문자열 (plain text) 로 만들고 싶을 때 사용합니다. JSON.parse() 이름처럼 문자열 (plain text) 을 자바스..
call, apply, bind 의 차이를 말해보세요.
call(), apply(), bind() 의 차이는? 차이를 물어보았지만, 먼저 공통점에 대해 간단히 얘기하며 설명하자면, Function.prototype 아래에 있는 메서드들입니다. 그리고 세 함수 모두 this 를 바인딩하는 것과 관련이 있습니다. Function.prototype.call() call() 의 역할은 간단히 설명하자면, 첫번째 인자를 this 로 이용하고 이후의 인자들은 함수의 인자로 이용됩니다. 아래의 코드로 설명할 수 있습니다. function printProductStock(stock) { console.log(`Product name is ${this.name}`); console.log(`Product price is $${this.price}`); console.log(..
웹 개발자를 위한 자바스크립트의 모든 것 1장 ES2015 - ES2020 정리
Ecma, ECMAScript, TC39 자바스크립트는 Ecma International 에 의해 "ECMAScript" 로 표준화된다. ECMAScript 표준은 ECMA-262이다. 표준 담당자는 TC39(Technical Committee) 조직의 일원이다. ES6 와 ES2015 ES6 와 ES2015 는 같은 버전이다. 자바스크립트 버전은 ES1, ES2, ... 처럼 순차적으로 늘어나다 2015년부터 버전의 년도를 표기하기 위해 ES6, ES2015 라는 표기를 병행했다. 예정된 변경사항을 참조할 때는 ESnext ES.next 와 같은 표현을 사용한다. 자바스크립트 엔진의 역할 자바스크립트 구문 분석 인터프리트 혹은 기계어로 컴파일 사양대로 작동하는 환경 내에서 결과 실행 브라우저별 자바스크..
프로토타입 체인 (Prototype Chain) 이란 무엇인가요? 아는대로 말해보세요.
프로토타입 체인이란? const a = {}; a. 빈 Object literal notation 으로 a 를 정의한 뒤에 a. 을 콘솔에 입력하면, 아래 이미지와 같이 많은 프로퍼티 후보군이 나온다. 이 때 후보군이 나오는 이유가 바로 프로토타입 체인 때문이다. 우리는 분명 프로퍼티를 정의한 적이 없는데, 정의한적도 없는 프로퍼티를 이용할 수 있는 이유가 바로 프로토타입 체인이다. __defineGetter__ __defineSetter__ __lookupGetter__ __lookupSetter__ __proto__ city constructor greet hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf..
JS 에서 오브젝트를 만드는 방법을 아는대로 말해보세요.
1. Object 생성자 let object = new Object();다만 퍼포먼스도 안좋고, Object 를 오버라이드하는 경우 예상치 못한 결과가 나올 수 있으니 사용하지 않는 게 좋다. Object lietral notation 이라 불리는 {} 를 사용하는 게 훨씬 퍼포먼스도 좋고 코드도 깔끔하다. 2. Object.create() 메서드 const person = { isHuman: false, printIntroduction: function () { console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`); }, }; const me = Object.create(person); me.name = "Matthew"; // "na..
CSS 작성 방법론 중 하나인 BEM 방법론이란?
BEM 방법론 (BEM Methodology) 이란? 대규모 프로젝트에서 CSS 코드를 관리하는 방식 중 하나이다. BEM 은 Block, Element, Modifier 의 약자이다. Block 하나의 엔티티로 그 자체로 의미가 있다. ex) header, container, menu, checkbox, input Element 그 자체로는 의미가 없으나, block 에 묶여 의미를 가지게 되는 요소이다. ex) menu item, list item, checkbox caption, header title Modifier Block 이나 Element 에 들어가는 flag 이다. 외관이나 행위를 변경하기 위해 사용한다. ex) disabled, highlighted, checked, fixed, siz..