Call Stack콜 스택이란 무엇일까. Call Stack은 함수를 사용할 때마다, 관련된 정보들이 쌓이는 곳이다. 단어를 그대로 보면, Call 은 호출을 말하고 Stack은 자료 구조인 Stack을 말한다. 즉 함수가 호출될 때 스택에 정보가 쌓이는 곳을 콜스택이라고 한다. 프로그램에서 함수들이 연쇄적으로 호출될 때, 스택의 형태로 메모리에 들어왔다가 나가게 된다.function f1() { f2();}function f2() { f3();}function f3() {}f1(); 아주 간단한 예시로 살펴보자 위 프로그램을 실행시키면 어떻게 될까? 스택에 위의 형태로 쌓이게 된다. f1()이 실행되며 먼저 쌓이고, 2 3 이 순서대로 들어온다. f3()이 실행이 완료가 되어야 f2()의 동작이..
컴파일러와 인터프리터 컴파일러 언어와 인터프리터 언어, 두 가지 언어에 대해서 살펴보자 컴파일러와 인터프리터에 대한 쉽고 재밌는 영상이 하나 있다! 인터프리터와 컴파일러 (한국어 자막을 켜고 보세요) 우리가 쓰는 소스코드는 컴퓨터가 이해하지 못한다. 그래서 이런 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 번역해주는 것이 컴파일러와 인터프리터 언어이다. 예를 들어, 자바스크립트는 사람이 이해하기 쉬운 형태이지만, 이런 영어 단어?의 집합을 컴퓨터는 이해하지 못한다. 그래서 일정한 규칙을 가지고 컴퓨터가 이해할 수 있게끔 바꾸어주는 것이다! 컴파일러는 무엇일까?우선 컴파일러는 무엇일까? 컴파일러는 프로그램 전체를 스캔하여 명령어를 번역해주는 프로그램을 말한다. 프로그램 전체를 스캔해야하기 때문에..
가비지 컬렉션Node.js는 V8엔진을 사용한다. V8 engine의 가장 큰 특징은 자동으로 메모리를 관리한다는 것이다. 이것은 가비지 컬렉션이 있어서 가능하다. 가비지 컬렉션은 힙 영역에서 더는 사용되지 않는 객체를 삭제하는 역할을 수행한다. 사실 이전에 자바의 메모리 구조와 가비지 컬렉션 동작 방식을 공부해서 정리한 적이 있었는데, 상당히 비슷한 느낌을 받았다.V8 엔진의 도식화된 Heap 사진이다. 예전에 자바에서의 가비지 컬렉션을 공부해본 경험이 있다. 위 그림을 보고 자바에도 저렇게 Young 영역과 Old 영역이 있는데, 자바스크립트도 가비지 컬렉터를 자바와 비슷하게 사용하는건가? 라는 생각을 했다. 그리고 찾아보니 거의 비슷했다. 자바는 Young Generation과 OldGenera..
https://level.goorm.io/exam/194982/%EC%9E%A5%EB%A7%88/quiz/1 구름LEVEL난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.level.goorm.io 위 문제를 풀려고하는데, 입력 인터페이스가 너무 생소했다.// Run by Node.jsconst readline = require('readline');(async () => { let rl = readline.createInterface({ input: process.stdin }); for await (const line of rl) { console.log('Hello Goorm! Your input is', line); rl.close(); } process.exit();..
문제https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이전형적인 BFS 문제이지만, 자바스크립트로 풀려니 구현 방식에서 고민이 많이 되었다. 우선 처음 작성한 코드를 살펴보며 자바와 다르게 고민했던 부분들을 정리해보겠다.function solution(maps) { var answer = -1; const N = maps.length; const M = maps[0].length; const dr = [-1,1,0,0]; c..
문제https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr풀이우선 순위 큐를 구현해야하는 문제이다. 자바에서는 라이브러리를 불러오면 쉽게 해결되지만, 자바스크립트에서는 직접 구현을 해야한다. 우선 순위 큐를 어떻게 구현할 수 있을까? 우선 순위 큐는 힙 자료 구조를 알면 쉽게 접근해볼 수 있다. 힙은 완전 이진 트리의 일종이다. 특징은 부모 노도의 키 값이 자식 노드의 키 값보다 항상 큰 이진 트리이다. 여기서 힙의 종류는 두 가지가 있다.어려운 것은 아..