본문 바로가기

개발/알고리즘15

[LeetCode] Valid Sudoku 주어진 2차원 배열 형태의 스도쿠 문제가 유효한지 리턴하는 문제다. leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/769/ Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 풀이 /** * @param {character[][]} board * @return {boolea.. 2021. 1. 15.
[LeetCode] Move Zeros, Two Sum Move Zeros leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/567/ 배열에서 0을 모두 찾아 맨 뒤로 옮기면 된다. // https://leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/567/ /** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */ var moveZeroes = function (nums) { let count = 0; let len = nums.length; for (let i = 0; i.. 2021. 1. 15.
[LeetCode] Rotate Array, Contains Duplicate Rotate Array leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/646/ /** * @param {number[]} nums * @param {number} k * @return {void} Do not return anything, modify nums in-place instead. */ var rotate = function (nums, k) { // for(let i = 0; i < k; i++) { // const pop = nums.pop() // nums.unshift(pop) // } // return nums; const spliced = nums.splice(nums.length - k, nums... 2021. 1. 8.
[LeetCode] Remove Duplicates From Sorted Array https://leetcode.com/problems/remove-duplicates-from-sorted-array/ /** * @param {number[]} nums * @return {number} */ var removeDuplicates = function (nums) { const arr = Array.from(new Set(nums)); nums.splice(0, arr.length, ...arr); return arr.length; }; 처음엔 return [...(new Set(nums))].length 라고 했다가 틀려서 다시 읽어보니 단순히 중복을 제거하고 반환하는 것이 아니라 "Note that the input array is passed in by reference, which.. 2021. 1. 6.
[LeetCode] Best Time to Buy and Sell Stock II leetcode.com/explore/featured/card/top-interview-questions-easy/92/array/564/ /** * @param {number[]} prices * @return {number} */ var maxProfit = function(prices) { let profit = 0; for(const i in prices) { console.log('오늘의 가격', prices[i]); if (i !== 0 && prices[i-1] < prices[i]) { profit += prices[i] - prices[i-1]; console.log('판매함', prices[i]); console.log('이윤', prices[i] - prices[i-1]) } } co.. 2021. 1. 6.
[LeetCode] 46. Permutations 순열 (Javascript) https://leetcode.com/problems/permutations/ var permute = function(nums) { return nums.reduce( function(list, element) { var newlist = []; list.forEach(function(seq) { for (var i = seq.length; i >= 0; i--) { var newseq = [].concat(seq); newseq.splice(i, 0, element); newlist.push(newseq); } }); return newlist; }, [[]] ); }; 순열 이해하기가 왜이렇게 어려운지.. 요약하면, 반복을 돌며 값을 고정해나가는 방식이다. [1, 2]이 있다고 하면, 배열 길이만큼.. 2020. 7. 22.
[LeetCode] 11. Container With Most Water (Javascript) https://leetcode.com/problems/container-with-most-water/submissions/ 막대들이 주어지고, 가장 넓은 면적을 찾는 문제다. 이중포문과 완전탐색으로 풀었는데, 문제를 딱 봤을때 직관적으로 떠오르는 풀이방법이긴 하지만... 더 좋은 방법이 있지 않을까? var maxArea = function(height) { // 위치 index, 높이 h인 object 배열을 만든다. const map = height.map((h, index)=> ({index, h})); let answer = 0; // 이중 포문...으로 모든 조합을 찾는다. for (let i = 0 ; i < map.length; i++) { for (let j = i + 1; j < map... 2020. 7. 21.
[LeetCode] 349, 350. Intersection of Two Arrays I, II (Javascript) 배열의 겹치는 부분을 찾는 문제다. 1은 여러번 겹쳐도 하나만 리턴하면 되고, 2는 여러번 겹치면 여러개를 리턴해야 한다. Intersection of Two Arrays I var intersection = function(nums1, nums2) { const answer = [] for (n1 of nums1) { if(nums2.includes(n1)){ answer.push(n1) } } return Array.from(new Set(answer)); }; nums1 배열을 반복을 돌면서 nums2에도 있다면 삭제하고 answer 배열에 담는 방식으로 풀었다. var intersection = function(nums1, nums2) { const answer = nums1.filter((n1).. 2020. 7. 20.
[LeetCode] 189. Rotate Array (Javascript) k번만큼 배열 앞에서 뒤로 아이템을 옮기는 문제다. var rotate = function(nums, k) { for(let i = 0; i < k; i++) { const pop = nums.pop(); nums.unshift(pop); } return nums; }; 문제 흐름대로 k번 반복을 돌며 pop과 unshift를 해도 되지만 var rotate = function(nums, k) { const spliced = nums.splice(nums.length - k, nums.length); nums.unshift(...spliced); return nums; }; k개만큼 떼서 한번에 unshift하는게 훨씬 낫다. 2020. 7. 20.