본문 바로가기

분류 전체보기93

[Javascript] 클로저 알아보기 - 2 지난 게시물에 이어서 클로저의 사용 예시에 대해 정리한다. 주로 코어 자바스크립트 책을 참고했다. 클로저 활용 사례 1. 콜백 함수 내부에서 외부 데이터 사용 시 콜백 함수란 다른 함수에 인자로 전달되는 함수이다. 즉, 다른 함수에서 이 콜백 함수를 사용하는 주도권을 쥐게 된다. 이러한 콜백 함수에서, 외부 변수를 참조하는 데에는 크게 3가지가 있다. (a) 콜백함수 내부에서 외부 변수를 직접 참조하는 방법(클로저 사용) var nameList = ['Ann', 'Gren', 'Jennifer']; var $ul = document.createElement('ul'); nameList.forEach(function (name) { var $li = document.createElement('li'); $.. 2024. 1. 8.
[Javascript] 클로저 알아보기 - 1 실행 컨텍스트에 대해 알아보았던 지난 번에 이어, 자세히 알고 있지 못했던 '클로저'에 대해 공부한 내용을 정리한다. 코어 자바스크립트와 모던 자바스크립트 Deep dive를 참고했다. 사용 사례 등은 다음 글에서 좀 더 정리하기로. 클로저(Closure)란? : 함수형 프로그래밍 언어에서 등장하는 보편적인 개념. 즉 자바스크립트의 고유한 개념은 아니다. 때문에 매체마다 다양한 정의로 클로저를 소개하고 있다. MDN에서 클로저의 개념을 발췌하자면 다음과 같다. "주변 상태(어휘적 환경)에 대한 참조와 함께 묶인(포함된) 함수의 조합입니다. 즉, 클로저는 내부 함수에서 외부 함수의 범위에 대한 접근을 제공합니다. ..." '어휘적 환경'이란 곧 실행 컨텍스트에서 배웠던 LexicalEnvironment를 .. 2024. 1. 5.
다익스트라 알고리즘 정리 지난 알고리즘 글에서 다익스트라 알고리즘을 정리한 글을 작성한다 예고했었다. 다익스트라 알고리즘의 구현 방법 및, 실제 문제 풀이를 정리해보고자 한다. 다익스트라 알고리즘(Dijkstra's Algorithm) : 그래프 상의 두 정점 사이의 최단거리를 구하는 알고리즘. GPS, 네트워크 라우팅 등의 다양한 분야에서 활용된다. 다익스트라 알고리즘 구현 다익스트라 알고리즘은 다음과 같은 과정을 거친다. 시작점에서 탐색을 시작한다. 새 노드에 방문할 때마다, 가장 작은 거리(가중치)를 갖는 노드를 골라서 방문한다. 방문한 노드의 각 인접점에 대해, 시작점까지의 거리를 계산한다. → 이 때, 새로운 최단거리가 나오면 최단거리를 업데이트 한다. 이전에 다른 글에서 정리한 그래프와 달리, 다익스트라 알고리즘의 구.. 2023. 12. 28.
[JavaScript] 실행 컨텍스트에 대하여 자바스크립트를 써온지도 몇 년, 당장 원하는 기능의 코드를 짜낼 수는 있어도 정작 언어 자체를 깊이 공부해본 적이 없다는 생각이 들었다. 지금이라도 부족했던 기본을 다지기 위해, 책과 이런저런 문서를 참고하며 조금씩 공부를 하고 있다. 블로그에서는 책을 읽으며 공부한 것을 요약하여 정리하고자 한다. 책의 경우, 코어 자바스크립트를 보고 있다. 조만간 모던 자바스크립트 Deep Dive 또한 참고하며 이런저런 내용을 공부할 예정이다. (책을 나눔해준 버블버블에게 무한한 감사...) 실행 컨텍스트(Execution Context)란? : 실행할 코드에 제공할 환경 정보들을 담아둔 객체. 클로저를 지원하는 대부분의 언어에 이것 비슷한 개념들이 존재한다고. → 어떠한 컨텍스트가 실행되면, 호이스팅 발생/외부 환.. 2023. 12. 23.
이진 힙(Binary Heap) 정리 알고리즘 문제 풀이를 진행하다 다익스트라 알고리즘 문제를 접하게 되었다. 다익스트라 알고리즘이 유명한 알고리즘이기도 하고, 이번 기회에 다익스트라 알고리즘 구현에 잘 쓰이는 이진 힙 및 우선순위 큐에 대해 알아보는 것이 좋겠다 싶어 강의를 들은 내용을 간략히 기록한다. 강의는 Udemy에 있는 JavaScript 알고리즘 & 자료구조 마스터클래스 이다. 힙 (Heap) : 트리와 비슷한 자료구조. 다만 트리와 달리 부모와 자식 노드 사이의 관계에 대한 조건이 존재한다. 이 조건은 힙의 종류에 따라 다름. 최대 힙(Max Heap): 부모가 늘 자식보다 큰 값을 지닌다. 최소 힙(Min Heap): 부모가 늘 자식보다 작은 값을 지닌다. 이진 힙(Binary Heap) : 힙 중에서도 오직 2개의 자식 노.. 2023. 12. 19.
문자열 문제 풀이 알고리즘 5주차 주제는 문자열이었다. 역시나 기억에 남는 문제 위주로 푼 문제를 정리해본다. 백준 4889번 문제가 어째 익숙한 느낌이 들었는데, 예전에 풀었던 4949번 균형잡힌 세상 문제와 비슷한 괄호 문제였다. 다만 약간의 차이가 존재하는데, 4949번은 괄호가 포함된 문자열을 탐색하고, 괄호가 올바른지(균형 잡혔는지)의 여부를 확인하는 문제였다면, 이 문제는 올바르지 않은(안정적이지 않은) 괄호 문자열을 최소 몇 번 수정해야 옳게 만들 수 있는지를 확인해야 한다. 따라서 4949번처럼 괄호를 스택에 넣고 빼며, 첫째로 괄호로 이루어진 문자열이 안정적인지 확인한다. 만약 스택에 남은 요소가 없다면 이미 괄호 문자열은 안정적인 상태이므로 수정할 필요가 없음을 의미한다. 만약 스택에 남은 요소가 있다면.. 2023. 12. 11.