leetcode

leetcode

20. Valid Parentheses 자바스크립트 스택

⚡문제정보 스택 문제의 예제로 자주 나오는 괄호네요 스택을 이용하면 간단히 풀 수 있습니다. 🔍나의 풀이 var isValid = function(s) { let stack = [] for(i=0 ; i

leetcode

496. Next Greater Element I 자바스크립트

⚡문제정보 문제가 되게 길어보이는데 사실 간단합니다. 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..

leetcode

451. Sort Characters By Frequency 자바스크립트

⚡문제정보 순서 상관없이 많이 등장한 알파벳 순서대로 나열하면 되는 문제입니다. 🔍나의 풀이 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()해준것을 더합니다.

leetcode

349. Intersection of Two Arrays 자바스크립트

⚡문제정보 두 배열의 교집합을 찾는 문제라고 요약할 수 있을 것 같습니다. 교집합... set을 사용하면 되지 않을까요..? 🔍나의 풀이 var intersection = function(nums1, nums2) { let intersect = function(setA, setB) { let intersection = new Set() setA.forEach(ele => { if(setB.has(ele)) intersection.add(ele) }) return [...intersection] } let setA = new Set(nums1) let setB = new Set(nums2) let answer = intersect(setA,setB) return answer }; 교집합을 찾는 함수를 만들..

leetcode

290. Word Pattern 자바스크립트

⚡문제정보 패턴을 체크해보고 맞으면 true 틀리면 false를 반환해야하는 문제입니다. 다만 교차검증이 필요하겠네요 예를 들어서 예제 3번을 기준으로 word : pattern 키밸류쌍만 만들게되면 dog는 a패턴 cat도 a패턴이 되버리니까요 🔍접근방법 map을 두개 만들어서 매번 패턴과 단어의 일치여부를 교차검증해준다. 🔍나의 풀이 var wordPattern = function(pattern, s) { s = s.split(' ') let map = new Map() let pamap = new Map() if(pattern.length != s.length) return false for(i=0 ; i

leetcode

229. Majority Element II 자바스크립트

⚡문제정보 테스트케이스만 보면 뭐 어쩌라는거지..? 싶은데 큰 마음을 먹고 문제 설명을 읽어보면 간단합니다. 등장횟수가 nums.length / 3보다 많은 숫자만 찾아서 배열에 담아라 라고 해석하면 되겠네요 🔍나의 풀이 var majorityElement = function(nums) { let map = new Map() let answer = [] for(num of nums) { map.set(num, (map.get(num) || 0) +1) } map.forEach( (value, key) => { if( value > (nums.length / 3) ) { answer.push(key) } } ) return answer }; map 자료구조에서 forEach를 돌릴때 주의할점은 당연히 인자..

leetcode

169. Majority Element 자바스크립트

⚡문제정보 배열에서 배열길이 / 2 한거보다 많이 등장한 값을 리턴하면 되는 간단한 문제입니다. 🔍나의 풀이 var majorityElement = function(nums) { let map = new Map() for(num of nums) { map.set(num, (map.get(num) || 0 ) +1 ) if( map.get(num) >= (nums.length / 2) ) return num } };

leetcode

49. Group Anagrams 자바스크립트

⚡문제정보 아나그램인것들끼리 모아서 배열로 만들어서 리턴해주면 되는 문제입니다. 🔍접근방법 아나그램이라면 sort()했을때 값이 같을것이라고 생각했습니다. sort해주고 map에 sort한 값을 기준으로 모아준 다음 values만 반환하면 답을 만들 수 있을거라고 생각했습니다. 🔍나의 풀이 var groupAnagrams = function(strs) { let map = new Map() strs.forEach(ele => { let spliter = ele.split('').sort().join('') if(!map.get(spliter))map.set(spliter, []) let arr = map.get(spliter) arr.push(ele) }) return [...map.values()] }..

냠냠맨
'leetcode' 카테고리의 글 목록 (3 Page)