일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- RT scheduling
- alexnet
- 프로그래머스
- 프로세스
- 배열
- 타입스크립트
- 연결 리스트
- 컨테이너
- 이진탐색
- C
- Machine Learning
- pytorch
- cors
- 웹팩
- 스택
- 해시테이블
- RxJS
- 자료구조
- GraphQL
- 자바스크립트
- 릿코드
- 큐
- 연결리스트
- 브라우저
- 코딩테스트
- vue3
- 프론트엔드
- 포인터
- APOLLO
- 알고리즘
- Today
- Total
목록자바스크립트 (39)
프린세스 다이어리
자바스크립트는 기본적으로 한 번의 한 작업만 수행 가능한 싱글 스레드 언어다. 하지만 자바스크립트는 웹 브라우저나 NodeJS와 같은 멀티 스레드 환경에서 실행된다. 자바스크립트가 멀티 스레드로 실행될 수 있도록 도와주는 장치에 대해 정리해보았다. 1. 콜백 함수가 실행되는 순서 console.log('123'); setTimeout(function() { console.log('567'); }, 300); console.log('987'); 123 987 567 여기 콘솔 로그 중간에 setTimeout이라는 함수가 있다. 이 함수는 첫 번째 인자로 들어간 함수를 두 번째 인자로 들어간 숫자만큼의 ms(밀리세컨드)를 기다렸다가 실행하도록 한다. 이 코드에 setTimeout 함수만 놓고 보면, 300m..
1. 배열로 접근하는 방법 전체 풀이 function solution(bridge_length, weight, truck_weights) { // queue 초기화 let queue = new Array(bridge_length).fill(0); let seconds = 0; while (queue.length) { // queue 하나씩 실행 queue.shift(); seconds++; let queueSum = queue.reduce((acc,cur) => acc + cur, 0); if (truck_weights.length) { if (queueSum + truck_weights[0] queue에 push(); let temp = truck_weights.shift(); queue.push(te..
자바스크립트로도 연결 리스트를 구현할 수 있다. C언어랑 거의 비슷한데 C에서 구조체로 Node를 만들어줬던 것처럼 자바스크립트에서는 클래스로 Node의 구성을 만들어줄 수 있다. 연결 리스트의 기본 클래스 구조와, 원소를 추가하고, 삭제하는 방법을 정리해보았다. 참고: C언어로 구현하기 1. 연결 리스트와 노드의 기본 구조 class Node { constructor(data) { this.next = null; this.data = data; } } 단방향 연결 리스트의 경우 뒤 노드의 값을 가리키는 next, 그리고 자신이 가지는 값인 data로 구성된 Node가 줄줄이 연결된 형태를 띠고 있다. 양방향 Node 구조체는 여기에서 자신의 앞 노드를 가리키는 this.prev가 추가된다. class ..
좀 지저분하긴 하나 나름 논리적이라고 생각^^ function solution(priorities, location) { let nodes = priorities.map((num, idx) => { return { priority: num, id: idx } }); let queue = []; // queue에 하나씩 집어넣는 로직 while (nodes.length !== 0) { let highest = 0; for (let i = 0; i highest) { highest = nodes[i].priority; } } let temp = nodes.shift(); if (temp.priority < highest) {..
function solution(progresses, speeds) { let answer = []; let workDays = progresses.map((work, i) => Math.ceil((100 - work) / speeds[i])) let prodDay = 0; for (let i = 0; i < workDays.length; i++) { if (prodDay < workDays[i]) { answer.push(1); prodDay = workDays[i]; } else { let temp = answer.pop(); answer.push(++temp); } } return answer; } 진도 95 90 99 99 80 99 속도 1 1 1 1 1 1 소요기간(일) 5 10 1 1 20 ..
1. 메모리 누수란? 메모리가 할당(allocated)된 상태에서, 프로그램의 어디에서도 참조(used)되지 않는데도 방출(release)되지 않은 상태로 계속 누적이 되면, 메모리 내에 프로세스 무게가 계속 더해져서 프로그램이 갑자기 종료되거나 멈춰버리는 주요한 원인이 된다. 자바스크립트에서는 기본적으로 가비지 콜렉터 기능을 가지고 있어, 프로그래머가 모든 변수를 필요 없어질 때마다 메모리 해제해 줘야 하는 부담은 덜었다. 하지만 애플리케이션이 복잡해지고 특정 라이브러리 또는 로직을 사용하여 코드를 짰을 때 의도대로 메모리가 정리되지 않고 지속적으로 쌓여 프로그램 성능이 저하될 가능성이 생긴다. 자바스크립트에서 대표적으로 메모리 누수를 막기 위해 어떤 방법을 사용할 수 있는지 정리해보았다. 2. 메모리..
1. 가비지가 무엇이고, 왜 가비지 컬렉터가 필요한가요? 가비지 콜렉터(Garbage Collector)는 애플리케이션이 실행될 때, 메모리에 저장은 되어 있지만 어디에서도 사용되지 않는 변수를 알아서 메모리에서 치워 주는 관리 방법이다. 제대로 이해하기 위해서는 먼저 가비지, 즉 쓰레기 메모리가 무엇이고 왜 생기는지를 알아야 한다. 이전에 업로드한 동적 메모리 할당의 개념을 정리한 글과 내용이 일부 중복되어 있다. 일반적으로 C에서 배열을 선언할 때, 사전에 적절한 크기만큼 할당해 준다. int a[20] = "hello world"; 그런데 항상 사전에 메모리를 할당해주는 게 아니라, 프로그램 실행 도중에 필요시 메모리를 할당해야 할 때가 있다. C에서는 malloc() 함수를 사용해, 원하는 만큼의..