-
프로그래머스 알고리즘 고득점 KIT > 더 맵게
/* 문제 설명 01. Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다 02. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다 03. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 04. 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. 식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. */ function solution..
-
Heap이란 무엇이고 어떻게 구현할까? (최대힙, 최소힙 구현 JS 코드)
힙(Heap)이란? 항목 내용 정의 • 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조이다. • 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. 특징 • 힙은 일종의 반정렬 상태(느슨한 정렬 상태) 를 유지한다. 01. 큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있다는 정도 02. 간단히 말하면 부모 노드의 키 값이 자식 노드의 키 값보다 항상 큰(작은) 이진 트리를 말한다. • 힙 트리에서는 중복된 값을 허용한다. (이진 탐색 트리에서는 중복된 값을 허용하지 않는다.) • JavaScript의 경우 내장 라이브러리에 Heap구조가 없기 때문에 직접 구현해야 한다. [시간 복잡도] • 최소값 찾기: O(1) 시간 복잡도로 가능 • 최소값 삭제:..
-
[JavaScript] Call Stack의 동작 원리
🙌🏻 JS의 동작원리를 깊게 이해함으로써, 더 나은 코드를 작성할 수 있게 한다. 노션에서 편하게 보기 (링크) 개요 JS의 이벤트 루프가 동작하는 방식을 살펴보다보니, Call Stack이 어떻게 쌓이고 업무가 실행되는가에 대한 동작 원리가 궁금했다. 이와 관련되어 Call Stack은 어떻게 쌓이는지 그리고 어떻게 쌓인 것들이 실행되는지에 대해서 공부하고 디깅했다. Call Stack이란? 호출 스택은 여러 함수들(functions)을 호출하는 스크립트에서 해당 위치를 추적하는 인터프리터 (웹 브라우저의 자바스크립트 인터프리터같은)를 위한 메커니즘(함수 호출 관리)이다. 현재 어떤 함수가 동작하고있는 지, 그 함수 내에서 어떤 함수가 동작하는 지, 다음에 어떤 함수가 호출되어야하는 지 등을 제어한다...
-
프로그래머스 알고리즘 고득점 KIT > 주식 가격
/* 문제 설명 01. 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수 02. 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수 */ function solution(prices) { var answer = []; while(prices.length > 0){ const currentPrice = prices.shift(); const lowerPriceIndex = prices.findIndex((item) => item < currentPrice); if(lowerPriceIndex < 0) answer.push(prices.length); else answer.push(lowerPriceIndex + 1); } return answer; } 1차 솔루션..
-
[JavaScript] 싱글스레드 언어인 JS가 비동기처리를 지원하는 방식 (w. 이벤트 루프)
노션으로 편하게 보기 (바로가기 링크) 개요 JS가 어떻게 비동기 동작을 통해서 작업을 동시에 처리해야 하는지 이해하고자 한다. 이를 위해서 JS가 싱글스레드 언어임을 인지하고 비동기 처리를 위해 사용된 브라우저 내부 구성요소들에 대해서 먼저 알아본 뒤에 동작 방식을 살펴 보려고 한다. Javascript는 싱글스레드 언어다. 싱글 스레드 언어는 한 번에 하나의 작업만을 처리할 수 있는 프로그래밍 언어이다. 이러한 언어는 동시에 여러 작업을 수행하지 않고, 하나의 작업을 완료한 후에야 다음 작업을 수행한다. JavaScript는 웹 브라우저 환경에서 주로 사용되며, 브라우저가 한 번에 하나의 작업만을 처리하도록 제한된다. 하지만, 웹 어플리케이션에서는 네트워크 요청이나 이벤트 처리, 타이머와 같은 작업을..
- 방문자수
전체 방문자
오늘 방문자
어제 방문자