분류 전체보기(472)
-
union-find(Disjoint-set)
union-find(Disjoint-set) union-find(Disjoint-set)은 데이터들을 하나의 집합으로 묶어 표현할 필요가 있을 때 사용된다. 예를 들어 게임에서 하나의 파티를 표현하고 싶을 때 같은 1번 파티라는 것을 표현하기 위해 사용된다. 이와 같은 연산을 하기 위해서 필요한 3가지 연산이 있습니다. 1. 초기화(init): 초기에는 특별한 집합이 없는 자기 자신을 가리키는 초기화를 만듭니다. 2. 합치기(union): 두 원소 a와 b가 주어졌을 때 이 둘을 하나의 집합으로 만듭니다. 3. 찾기(find): 해당 원소가 어떤 집합에 속해있는지 찾습니다. 이러한 집합을 표현하는데 있어서 가장 쉬운 방법은 트리를 이용한 것입니다. 트리에서 한 집합에 속하는 원소들을 하나의 트리로 묶어줍..
2020.06.25 -
javascript 33가지 기본 컨셉: 8. IIFE, Modules, Namespaces
IIFE(즉시 실행함수) 즉시 실행함수는 정의되자 마자 바로 실행되는 함수를 의미한다. 대부분 첫번째 괄호 안에 익명 함수를 정의하는 방법으로 사용한다. (function (){ console.log("add"); })(); (()=>{ console.log("arrow"); })(); 이 것을 만듬으로 기대하는 효과는 크게 두가지다. 1. 글로벌 전역 함수로 선언되지 않게 막을 수 있다. 2. IIFE안으로 다른 변수들이 접근을 못하도록 막든다. 즉 IIFE 안에 존재하는 코드는 외부에서 변경할 수 없다. 따라서 아래와 같은 경우에는 에러가 발생한다. 위의 에러는 IIFE안에 선언된 변수를 글로벌 스코프에서 접근하여 변경하려고 했기 때문에 에러가 발생했다. 물론 IIFE안에서 접근하면 오류가 발생하지 ..
2020.05.21 -
javascript 33가지 기본 컨셉: 7. Expression vs. Statement
Expression vs. Statement Expression js에서 Expression은 value를 return 하는 것을 의미한다. 그냥 단순히 value도 될 수 있고 function을 통해서 반환하는 value일 수도 있습니다. 예를 들어 1 + 1 // expression function add(a, b){ return a + b; } const ab = add(1, 2); // expression function add(a, b){ a + b; } const ab = add(1, 2); // undefined가 출력되지만 // undefined를 반환하기 때문에 expression이다. Statment js에서 지시 및 명령을 의미한다. 아래의 예를 보면 바로 이해가된다. for(var ..
2020.05.19 -
javascript 33가지 기본 컨셉: 6. Scope
Scope 스코프란 각 변수를 참조할 수 있는 범위를 나타냅니다. 한마디로 해당 변수를 사용할 수 있나 없나를 의미한다. Lexical Scope js의 경우 각 변수들의 스코프가 결정될 때는 함수가 호출될 때가 아닌 선언될 때이다. 그래서 아래의 결과로 1이 호출된다. 함수가 선언될때 x의 스코프가 결정되기 때문에 bar는 가장 바깥의 x에 접근하게 된다. let x = 1; function foo() { let x = 10; bar(); } function bar() { console.log(x); } foo(); bar(); Global Scope 어디서든지 접근하여 변수를 사용할 수 있다. 가장 최상위 단의 scope이다. var a = 1; function hi(){ console.log(a);..
2020.05.16 -
javascript 33가지 기본 컨셉: 5. Type of
JS에서는 크게 타입 걱정을 하지 않고 변수선언을 해주고 있다. 이러한 과정중에 자기가 사용하는 변수의 타입을 놓치는 경우가 있다. 이럴 때 primitive type 혹은 array, Object의 타입을 확인하기 위해 사용하는 것이 Type of이다. 오늘은 Type of 및 instanceof에 대해 알아보도록 하자!! typeof은 primitive type의 변수들의 타입을 확인할 수 있습니다. primitive의 문자열, 숫자, boolean, undefined, function(){} 등을 의미한다. typeof []의 경우는 Array인데도 object를 반환한다. Array와 Object를 구분하기 위해서는 instanceof를 사용해야한다. instanceof와 typeof는 대체로 비..
2020.05.14 -
투포인터(two pointer)
가가오 문제 중 투포인터가 나왔다 필자는 투포인터라는 존재를 모른채 이진 탐색 문제인줄 알고 오지게 삽질하다가 못풀었다. 그래서 그 분노로 투포인터에 대해 공부하고 백준 문제 4문제 정도를 풀었다. 투 포인터는 이름 그대로 두개의 점을 사용하여 연속된 수의 집합의 합 및 개수들을 구할 수 있게 해준다. 여기서 주의 할 점은 연속된 집합이다. 시작은 start, end 둘다 첫 요소를 가리키며 시작한다. 목표하는 숫자에 비해 작으면 end를 계속 늘려가주며 더해준다. 그러다 목표하는 숫자에 비해 커지거나 같아지면 start요소의 값을 빼주고 start를 늘린다. 사실 글만 보면 어떤 느낌인지 느낌이 안올 것이다. 그래서 그림을 준비했다. 위 그림을 통해서도 알 수 있지만 크게 생각할 점은 두가지다. 집합의..
2020.05.10