⚡문제정보 두 값의 조합 중 작은 값을 모아서 합계를 내는데 최대한 높은 값을 만들어야 하는 문제입니다. easy 문제니까 감이 오시겠지만 이거 오름차순 정렬해놓으면 끝임 🔍나의 풀이 var arrayPairSum = function(nums) { let answer = 0 nums.sort((a,b) => a - b) for(i=0 ; i< nums.length ; i += 2) { answer += nums[i] } return answer }; 정렬해주고 i를 2씩 증가시켜주면서 answer에 nums[i]를 누적해줍니다. 끝
⚡문제정보 그림이 있었으면 아주 쉽게 이해가 될텐데 x축 y축 소리 때문에 오히려 한번에 이해가 안되었던 문제 그러니까 저 배열안에 담긴 두 숫자는 x 축의 선분이라고 생각하면 되고 화살을 이런식으로 쏠 수 있는데 최소한으로 화살을 쏴서 모든 풍선을 터치고 싶다.라는 내용입니다. 🔍접근방법 끝 선분을 기준으로 오름차순 정렬해준 다음 비교해주면 끝 🔍나의 풀이 var findMinArrowShots = function(points) { let answer = 1 points.sort((a,b) => { return a[1] - b[1] }) let pointer = points[0][1] for(i=1 ; i= points[i][0]) continue else { pointer = points[i][1] ..
⚡문제정보 sort를 잘 활용하면 풀 수 있을 문제같아 보이는데 sort가 제 마음대로 잘.. 동작을 안해서 조금 참고를 통해 풀었습니다. 🔍나의 풀이 var largestNumber = function(nums) { if(!nums.filter(ele => ele != 0).length) return '0' nums.sort( (a,b) => { let as = a.toString() let bs = b.toString() return parseInt(as + bs) > parseInt(bs + as) ? -1 : 1 }) return nums.join('') }; 만약 모든 요소가 0인 경우엔 '0'을 리턴해줍니다. 그렇지않으면 [0,0]같은 케이스에서 '00'이 리턴되기때문이에요 nums를 sort..
⚡문제정보 i < j < k 가 성립해야하는데 꼭 순서대로 성립하지 않아도 괜찮습니다. 즉 좀 띄엄띄엄있어도 i < j < k이기만 하면 true를 반환하는 조건입니다. 예컨대 아래 배열같은 경우 true를 반환해야할것입니다. [ 10 , 2 , 12 , 5 , 3 , 8 ] 🔍접근방법 그리디 알고리즘을 통해 O(n)으로 해결할 수 있을 것 같습니다. 예를 들어 가장 작은 값과 가장 작은 값보다 큰 값을 정해준뒤 nums[i]를 계속 업데이트해주면서 나아가는거죠! 🔍나의 풀이 var increasingTriplet = function(nums) { let Max1 = Infinity let Max2 = Infinity for(i=0 ; i< nums.length; i++) { if(Max1 < Max2 ..
⚡문제정보 Anagram이 성립하는 경우를 체크하면 되는 문제인데 시작인덱스부터 p의 길이만큼 비교해보고 성립하면 그 시작인덱스를 체크하면되는 문제입니다. 모든 시작점을 다 체크해봐야겠네요 🔍나의 첫번째 풀이 /** * @param {string} s * @param {string} p * @return {number[]} */ var findAnagrams = function(s, p) { s = s.split('') p = p.split('') let map = new Map() let answer = [] let set = new Set(p) for( string of p){ map.set(string, (map.get(string)||0) + 1 ) } for(i=0 ; i ele != 0 ) i..
⚡문제정보 영어라 곤란하지만 문제 자체는 굉장히 심플합니다. 문자열 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..
⚡문제정보 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 ..