전체 글
백준 / 비트마스킹 / 11723번 / 집합 / JS
문제 간단설명비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오.add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다.remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다.check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20)toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)all: S를 {1, 2, ..., 20} 으로 바꾼다.empty: S를 공집합으로 바꾼다. 제한 사항1 시간제한 1.5초메모리 제한 4MBnode.js 제출 불가!!! 성공 코드 const fs = require('fs');co..
Programmers / Level 2 / 2개 이하로 다른 비트 / JS
문제 간단설명x가 주어지면 x보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수를 반환하면 된다. 제한 사항1 0 실패 코드 (10번, 11번 테스트케이스 실패)function solution(numbers) { const f = (n) => { if (n % 2 === 0) { return n + 1; } let bit = 1; // 가장 가까운 0을 찾는 반복문이다. while ((n & bit) !== 0) { // bit를 왼쪽으로 한 칸씩 이동시킨다. bit > 1); }; const result = numbers.map((n) => f(n)); return result;} 전체적인 로직은 틀리지 않았다. 다만 총 11개..
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..