diff --git a/contains-duplicate/jeongwoo903.js b/contains-duplicate/jeongwoo903.js new file mode 100644 index 000000000..8454779c6 --- /dev/null +++ b/contains-duplicate/jeongwoo903.js @@ -0,0 +1,11 @@ +/** + * @param {number[]} nums + * @return {boolean} + */ + +var containsDuplicate = function(nums) { + const originalLength = nums.length; + const parsedLength = new Set(nums).size; + + return originalLength !== parsedLength; +}; diff --git a/house-robber/jeongwoo903.js b/house-robber/jeongwoo903.js new file mode 100644 index 000000000..b94456ab3 --- /dev/null +++ b/house-robber/jeongwoo903.js @@ -0,0 +1,19 @@ +/** + * @param {number[]} nums + * @return {number} + */ + +// dp 개념을 이용 + +var rob = function(nums) { + if(nums.length == 0) { return 0 }; + if(nums.length == 1) { return nums[0] }; + + nums[1] = Math.max(nums[0], nums[1]); + + for(let i = 2; i < nums.length; i++) { + nums[i] = Math.max(nums[i-2] + nums[i], nums[i-1]) + } + + return nums[nums.length - 1]; +}; diff --git a/longest-consecutive-sequence/jeongwoo903.js b/longest-consecutive-sequence/jeongwoo903.js new file mode 100644 index 000000000..06f390ae3 --- /dev/null +++ b/longest-consecutive-sequence/jeongwoo903.js @@ -0,0 +1,25 @@ +/** + * @param {number[]} nums + * @return {number} + */ + +var longestConsecutive = function(nums) { + if (nums.length <= 1) return nums.length; + + const sortedArray = [...new Set(nums)].sort((a,b) => a - b); + + let maxLength = 1; + let currentLength = 1; + + for (let i = 1; i < sortedArray.length; i++) { + if (sortedArray[i] === sortedArray[i-1] + 1) { + currentLength++; + } else { + currentLength = 1; + } + + maxLength = Math.max(maxLength, currentLength); + } + + return maxLength; +}; diff --git a/top-k-frequent-elements/jeongwoo903.js b/top-k-frequent-elements/jeongwoo903.js new file mode 100644 index 000000000..97f1232bb --- /dev/null +++ b/top-k-frequent-elements/jeongwoo903.js @@ -0,0 +1,20 @@ +/** + * @param {number[]} nums + * @param {number} k + * @return {number[]} + */ +var topKFrequent = function(nums, k) { + // Map을 통해 nums의 담긴 숫자들의 빈번함을 정리함. + const frequencyMap = nums.reduce((map, num) => { + map.set(num, (map.get(num) || 0) + 1); + return map; + }, new Map()); + + // 빈도수를 기준으로 정렬하여 답을 유도함. + const result = Array.from(frequencyMap.entries()) + .sort((a, b) => b[1] - a[1]) + .slice(0, k) + .map(item => item[0]); + + return result; +}; diff --git a/two-sum/jeongwoo903.js b/two-sum/jeongwoo903.js new file mode 100644 index 000000000..1144c727a --- /dev/null +++ b/two-sum/jeongwoo903.js @@ -0,0 +1,20 @@ +/** + * @param {number[]} nums + * @param {number} target + * @return {number[]} + */ +var twoSum = function(nums, target) { + const numMap = new Map(); + + for (let i= 0 ; i < nums.length ; i++ ) { + let complement = target - nums[i]; + + if (numMap.has(complement)) { + return [numMap.get(complement), i]; + } + + numMap.set(nums[i], i); + } + + return []; +};