⚡DP란? 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 상승시키는 방법입니다. 이미 계산 된 결과(작은 결과)를 별도의 메모리공간에 저장해두고 그 결과가 필요할때 꺼내서 사용하여 다시 계산하지 않도록 하며 일반적으로 탑다운 방식과 바텀업 방식 두가지 방식으로 구현됩니다. ⚡동적계획법이면 자료구조에서 말하는 동적 할당이랑 비슷한거임? 아니오 자료구조에서의 동적할당은 프로그램이 실행되는 도중 실행에 필요한 메모리를 할당하는 기법 을 말합니다. 하지만 동적계획법에서 동적(Dynamic)은 그냥 별 의미 없이 사용된 단어입니다. ⚡DP 이거 언제 쓸 수 있음? 1. 최적 부분 구조(Optimal Substructure)와 2. 중복되는 부분 문제(Overlapping Subpromblem) 두 조건이..
⚡문제정보 영어라 곤란하지만 문제 자체는 굉장히 심플합니다. 문자열 s와 문자열요소로 이루어진 배열 wordDict가 주어지는데 wordDict에 있는 단어를 재사용해도 상관없으니까 사용해서 s를 만들 수 있냐? 할 수 있으면 true 없으면 false를 반환해라 근데 여기서 🙄제한사항 Input: s = "catsandog", wordDict = ["cats","dog","sand","and","cat"] Output: false 이런식으로 wordDict의 단어들을 누더기처럼 이어붙이면 s를 만들 수는 있는데 공백없이 이전에 썻던 알파벳을 중복 사용해서 쓰면 안된다. 라고 이해할 수 있을듯 🔍접근방법 저는 못 풀었고요 답지 봤습니다. https://leetcode.com/problems/word-br..
⚡문제정보 처음으로 제 힘으로 푼 3레벨 문제입니다만.. 정답률이 50%나 되는 3레벨 중엔 쉬운 문제네용.. 물론 저는 쉽게 못 풀었습니다. 문제를 풀면서 주의할 점은 다음과 같습니다. 🙄주의사항 1. 각 장르별로 가장 많이 플레이 된 곡을 2개씩 뽑아와야합니다. ** 이때 장르에 곡이 한개밖에 없는 경우도 존재합니다. 2. 각 장르에 속한 곡의 모든 플레이 수를 합산하여 가장 플레이수가 많은 순서대로 나열해야합니다. ** 단일 곡의 플레이수를 기준으로 정렬해선 안됩니다. 3.고유번호는 배열 인덱스입니다. 4. 합산플레이가 많은 장르 순서대로 곡을 나열해야합니다. ** 각 장르별 가장 플레이수가 많은 곡을 찾기위한 정렬(1)과 합산플레이가 많은 장르 순서대로 나열하기 위한 정렬(2) 즉 정렬이 두번 필..
⚡문제정보 roman to integer문제와 다르게 정수가 주어지고 그 정수를 로마자로 변환 시켜주는 문제입니다. 대신 4, 9와 같은 숫자들은 IIII같이 네개를 붙여쓰는게 아니라 IV와 같이 작은 로마자를 한단계 큰 로마자의 앞에 붙여주는것으로 표현하면 되는군용 전 똑똑한 사람의 블로그를 참고해서 코드를 따라 쳤습니다 https://leet-codes.blogspot.com/2022/09/12-integer-to-roman.html 12. Integer to Roman Solution | Integer to Roman | Javascript | Leetcode leet-codes.blogspot.com 🔍다른사람의 풀이 var intToRoman = function (num) { if (num < ..
⚡문제정보 오른쪽 값 중에 자기자신보다 큰 값이 있으면 그 값을 대입해주면 되는 문제였는데 거기에 추가로 오른쪽에 자기자신보다 큰 값이 없다면 왼쪽을 추가로 탐색해보는 조건이 생긴 문제입니다. 🔍접근방법 먼저 숫자의 오른쪽을 기준으로 탐색해본 뒤 오른쪽에 큰 값이 없다면 왼쪽을 순회하면서 큰값을 찾습니다. 만약 오른쪽 왼쪽 모두 기준값보다 큰 값이 없다면 -1을 push합니다. 🔍나의 풀이 var nextGreaterElements = function(nums) { let answer = [] for(i=0 ; i nums[i]) { answer.push(nums[j]) break } } } if(answer.length != i + 1) { answer.push(-1) } } return answer ..
⚡문제정보 문제가 되게 길어보이는데 사실 간단합니다. nums1은 nums2의 부분집합이고 각 배열의 요소들은 중복이 없다는 가정인듯합니다. 예를 들어 nums1의 4를 기준으로 보면 nums2에서 4보다 큰값은 오른쪽에서 찾을 수 없으니 -1 nums1의 1을 기준으로 보면 nums2에서 1보다 큰 값 중 오른쪽에서 가장 가까운 값은 3이니까 3 이런식이네요 🔍나의 풀이 var nextGreaterElement = function(nums1, nums2) { let answer = [] for(num of nums1) { let counter = -1 for(i = nums2.indexOf(num) ; i num ) { counter = nums2[i] break } } answer.push(count..
⚡문제정보 순서 상관없이 많이 등장한 알파벳 순서대로 나열하면 되는 문제입니다. 🔍나의 풀이 var frequencySort = function(s) { let map = new Map() let answer = '' for(i=0 ; i b[1] - a[1] ).forEach(ele => { answer += ele[0].repeat(ele[1]) }) return answer }; map을 만들어서 횟수를 다 담아줍니다. 전개연산자로 배열로 만들어준다음 밸류 기준으로 내림차순 정렬합니다. 그 다음 forEach를 통해 answer에 밸류만큼 키값을 repeat()해준것을 더합니다.