PS

    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..

    LeetCode / Array / 1442번 / Count Triplets That Can Form Two Arrays of Equal XOR / JS

    정수로 이루어진 배열 arr가 주어진다.3개의 index가 주어지는데, 각각 i, j, k라고 하자. 이들은 다음과 같은 상관관계를 갖는다.0 그리고 우리는 이것을 이용해서 a와 b를 찾아야한다. a와 b는 다음과 같다.a = arr[i] ^ arr[i+1] ^ ... ^ arr[j-1]b = arr[j] ^ arr[j+1] ^ ... ^ arr[k]여기서 ^는 bitwise-xor 이다. a와 b가 같게되는 i, j, k쌍의 개수가 몇개인지 반환하면 되는 문제이다. 1 1  1. 실패 코드 - 시간 초과/** * @param {number[]} arr * @return {number} */var countTriplets = function(arr) { const len = arr.length; ..

    LeetCode / Binary Search / 1608번 / Special Array With X Elements Greater Than or Equal X / JS

    양수만 존재하는 nums 배열이 주어진다.x를 찾아서 반환하면 되는 문제인데, 이 x의 조건은 다음과 같다.nums 배열안에 존재하지 않는 수이다.x이상의 수가 정확히 x개 존재해야 한다.만약 x가 존재할 수 없다면 -1을 반환하면 된다. [ 풀이 1 - 단순 구현 ]/** * @param {number[]} nums * @return {number} */const specialArray = (nums) => { const sortedNumberList = [...nums].sort((a, b) => a - b); const min = 0; const max = sortedNumberList.at(-1); for (let x = max; x > min; x--) { let count = 0;..

    Programmers / Level 3 / 베스트앨범 / JS

    프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr const infoObj = {}; const playOfGenre = {}; let result = []; function solution(genres, plays) { const length = genres.length; /** * 곡별 정보들을 객체로 만드는 함수 */ const getInfo = () => { for (let i = 0; i < length; i++) { const genre = genres[i]; const play = plays[i]; infoObj[i] = {..