분류 전체보기
Programmers / Level 2 / 롤케이크 자르기 / JS
문제 간단설명철수와 동생은 롤케이크를 두조각으로 나눠 먹으려고 한다.위에 토핑이 올려져 있는데, 둘로 같게 나누는 기준은 토핑 종류의 개수이다.위에 올라가 있는 토핑 리스트가 주어질 때, 토핑 종류의 개수가 같을 수 있게 나누는 방법이 몇개인지 반환하면 된다. 제한 사항1 1 실패 코드 (시간 초과)function solution(topping) { let result = 0; for(let i=0; i 토핑이 몇개인지 상관없이 '토핑 종류의 개수'만 중요하므로 set 자료구조를 사용했다.단순히 slice로 케이크를 나누고, 각 set에 집어넣어서 size를 구하면 토핑 종류의 개수가 나온다.그렇게 양쪽 케이크의 토핑 종류의 개수가 같다면 반환값을 하나 더해주었다. 일단 for 반복문..
Programmers / Level 2 / 뒤에 있는 큰 수 찾기 / JS
문제 간단설명정수로 이루어진 배열 numbers가 있다.각 수에 대해서 가장 가깝고 자신보다 큰 수를 '뒷 수'라고 한다.각 요소에 대해 '뒷 수'들을 모아서 배열로 반환하면 된다.만약 뒷 수가 존재하지 않는다면 -1을 반환하면 된다. 제한 사항4 1 실패 코드 (시간 초과)function solution(numbers) { const result = []; for(let i=0; i cur) { backNumber = next; break; } } result.push(backNumber); } return result;} 최악의 경우에 O(n^2..
JS는 어떻게 배열의 사이즈를 지정하지 않고 사용할 수 있을까?
JavaScript의 Array ObjectsECMAScript 2025 문서엔 다음과 같이 나와있습니다. ECMAScript® 2025 Language SpecificationThe first and subsequent editions of ECMAScript have provided, for certain operators, implicit numeric conversions that could lose precision or truncate. These legacy implicit conversions are maintained for backward compatibility, but not provided for BigItc39.es"Arrays are exotic objects that give..
LeetCode / Heap / 502번 / IPO / JS
더보기LeetCode가 IPO를 앞두고 자본을 최대화하기 위해 최대 k개의 프로젝트를 선택하여 완료하려고 한다.각 프로젝트는 특정 이익(profits)과 시작하기 위해 필요한 최소 자본(capital)을 가지고 있다.초기 자본(w)로 시작하여 프로젝트를 선택하고, 선택한 프로젝트의 이익을 총 자본에 추가한다.최대 k개의 프로젝트를 선택하여 최종 자본을 최대화하는 방법을 찾아야 한다.최종 최대 자본을 반환하면 되는 문제이다. /** * @param {number} k 선택할 프로젝트의 최대 개수 * @param {number} w 초기 자본 * @param {number[]} profits 순수 이익 * @param {number[]} capital 시작하기 위해 필요한 최소 자본 * @return {nu..
LeetCode / Two Pointer / 75번 / Sort Color / JS
더보기문제는 0, 1, 2로 이루어진 배열을 다음 규칙에 따라 정렬하라는 문제이다. 0은 배열의 앞쪽에 배치1은 그 다음에 배치2는 배열의 끝쪽에 배치그냥 쉽게 오름차순으로 정렬하면된다. 하지만 다음과 같은 제한사항이 있다.공간 복잡도 O(1)원소의 총 개수는 n이고, 1 /** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */var sortColors = function (nums) { const COLOR = { RED: 0, WHITE: 1, BLUE: 2, }; let left = 0; let right = nums.length - 1; let ..
LeetCode / Array / 260번 / Single Number ||| / JS
정수 배열인 nums 배열이 주어진다.모든 수는 2번씩 나타나는데, 딱 두개의 수만 1번씩만 나타난다.이 두개의 수를 배열로 반환하는 문제이다. /** * @param {number[]} nums * @return {number[]} */var singleNumber = function (nums) { const count = {}; nums.forEach((num) => { count[num] = count[num] + 1 || 1; }); const result = []; for (const num in count) { const countOfNum = count[num]; if (countOfNum === 1) { result.push(num); } } r..