Javascript
[Javascript] 커링(Currying)이란
수학과 컴퓨터 과학에서 커링(currying)이란 다중 인수 (혹은 여러 인수의 튜플)을 갖는 함수를 단일 인수를 갖는 함수들의 함수열로 바꾸는 것을 말한다. 커링의 사용 예시 커리 함수는 '함수를 매개 변수로' 받는다. 커리 함수는 실행 시점에 매개 변수로 받은 함수의 인자를 사용하는 함수를 다시 반환한다. 반환되는 함수는 Lexical scope 개념에 의해 커리 함수에 전달된 함수를 기억한다.(= 클로저) Step 1. 커링 대상 함수 선언 커링 대상 함수인 sum은 매개 변수로 num1, num2 두 개를 받는다. function sum(num1, num2) { return num1 + num2; } console.log(sum(10, 20)); // 30 Step 2. 커링 함수 선언 커리 함수..
[Javascript] require 와 import 비교
공통점 두 가지 모두 외부의 파일이나 라이브러리 등 모듈을 불러오는 목적으로 사용한다. require - exports Node.js에서 사용되고 있는 CommonJS 키워드이고 Ruby 의 언어 스타일과 비슷하다. import - export ES6(ES2015)에서 새로 도입된 키워드로서 Java나 Python 언어 방식과 비슷하다. 차이점 1. 문법구조 아래 2줄의 코드는 기본적으로 외부 모듈의 코드를 불러오는 동일한 작업을 수행하고 있지만 문법 구조가 다르다. /* CommonJS */ const name = require('./module.js'); /* ES6 */ import name from './module.js' require()는 CommonJS를 사용하는 node.js문이지만 imp..
[JS] 중복되지 않는 알파벳으로 이루어진 가장 긴 문자열 찾기
# 문제 String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요. str: 텍스트 return: 중복되지 않은 알파벳 길이 (숫자 반환) 예를 들어, str = "abcabcabc" return 은 3 => 'abc' 가 제일 길기 때문 str = "aaaaa" return 은 1 => 'a' 가 제일 길기 때문 str = "sttrg" return 은 3 => 'trg' 가 제일 길기 때문 reduce,, for,, forEach,, 재귀함수 등 여러가지 알고있는 방법 총 동원하여 며칠 씨름하다 해결完,,, 충분히 해결할 수 있는 문제였는데 막무가내 식으로 접근하니 코드가 꼬이고 생각도 꼬이는 구나,, 초기에 어떻게 문제를 해결할지 우선적으로 생각해보고 ..
[Javascript] Closure
함수를 선언할 때 만들어진 scope가 사라진 후에도 호출할 수 있는 함수 scope가 끝난 외부 함수의 변수를 참조할 수 있다. → 어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우, A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상 클로저(closure)란, 외부 함수에 접근할 수 있는 내부 함수 혹은 이러한 원리를 일컫는 용어인데 스코프에 따라서 내부함수의 범위에서는 외부 함수 범위에 있는 변수에 접근이 가능하지만 그 반대는 실현이 불가능하다는 개념이다. 특징으로는 외부함수는 외부함수의 지역변수를 사용하는 내부함수가 소멸될 때까지 소멸되지 않는다.예를 들어 한 함수안에 다른 함수가 있다면 그 안의 함수는 바깥에 정의해놓은 변수를 사용할 수 있지만 그 반..
[JavaScript] 이진 탐색(Binary Search) 알고리즘
"이진 탐색 알고리즘의 이해와 적용" 1. 이진탐색이란? 데이터가 정렬되어 있는 배열에서 특정한 값을 찾는 알고리즘. ㄴ _본 게시글의 예시의 경우 오름차순으로 되어 있는 데이터를 사용 배열의 있는 임의의 중간 값을 선택하여 찾고자 하는 값 X 와 비교한다. X 가 중간 값보다 작으면 좌측 데이터를 대상으로, X 가 중간 값보다 크면 우측 데이터를 대상으로 다시 탐색한다. X 값을 찾을 때까지 동일한 방법을 반복한다. _(up-down 숫자맞추기 게임과 유사) Database Index 적용의 장단점 장점 - Full Table Scan에 비해 데이터 검색 속도 및 성능이 향상된다. 단점 - 탐색을 위한 정렬된 테이블이 추가되기 때문에 메모리를 사용한다. - DB가 수정될 때마다 인덱스의 업데이트가 필요..
[Javascript] Math 함수 정리
Math is a built-in object that has properties and methods for mathematical constants and functions. It’s not a function object. -> Math 객체는 수학에서 자주 사용하는 상수와 함수들을 미리 구현해 놓은 자바스크립트 표준 내장 객체이다. -> 생성자가 존재하지 않아서 따로 인스턴스를 생성하지 않더라도 Math 객체의 모든 method나 property를 바로 사용할 수 있다. 자주 사용하는 함수 정리 Math.min(x,y,z....) 가장 작은 값 반환 Math.max(x,y,z....) 가장 큰 값 반환 Math.random() 0보다 크거나 같고 1보다 작은 무작위 숫자 반환 Math.round(..
[Javascript] Array 함수 훈련
알고리즘 문제를 풀며 array 함수의 중요성을 다시 깨달았다... 앞으로 많이 사용할 것으로 예상되니,, 머릿속에 깊게 새길 수 있도록.. 반복된 훈련을 통해 익히자. 아래는 array를 훈련하며 사용된 문제와 함수이다. 실제로는 더 복잡하게 사용되지만 우선 어떤 함수들이 있으며 어떻게 사용되는지 간단 명료하게 정리하였다. // Q1. make a string out of an array { const fruits = ["apple", "banana", "orange"]; const join = fruits.join(","); console.log(join); } // Q2. make an array out of a string { const fruits = "🍎, 🥝, 🍌, 🍒"; const resu..