From cdbd8568dc017c058e2851c38c57c10830216b05 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Wed, 2 Apr 2025 01:34:07 +0900 Subject: [PATCH 1/5] contains duplicate solution --- contains-duplicate/froggy1014.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 contains-duplicate/froggy1014.js diff --git a/contains-duplicate/froggy1014.js b/contains-duplicate/froggy1014.js new file mode 100644 index 000000000..efe63c4ce --- /dev/null +++ b/contains-duplicate/froggy1014.js @@ -0,0 +1,9 @@ +// Set을 사용한 중복값 제거 후 길이 비교 +function containsDuplicate(nums) { + const numSet = new Set(nums); + return numSet.size !== nums.length; +} + +console.log(containsDuplicate([1, 2, 3, 1])); // true +console.log(containsDuplicate([1, 2, 3, 4])); // false +console.log(containsDuplicate([1, 1, 1, 3, 3, 4, 3, 2, 4, 2])); // true From 1c06aeec1fa0c61434a9b6419962218ed0a21973 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Thu, 3 Apr 2025 22:45:23 +0900 Subject: [PATCH 2/5] two sums solution --- two-sum/froggy1014.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 two-sum/froggy1014.js diff --git a/two-sum/froggy1014.js b/two-sum/froggy1014.js new file mode 100644 index 000000000..e67f43545 --- /dev/null +++ b/two-sum/froggy1014.js @@ -0,0 +1,18 @@ +/** + * @param {number[]} nums + * @param {number} target + * @return {number[]} + */ +var twoSum = function (nums, target) { + let map = new Map(); + for (let idx = 0; idx < nums.length; idx++) { + const rest = target - nums[idx]; + if (map.has(rest)) { + return [map.get(rest), idx]; + } + map.set(nums[idx], idx); + } + return []; +}; + +console.log(twoSum([2, 11, 15, 7], 9)); From 1383091d8c1127bb09c74af32d2788789c249e48 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Thu, 3 Apr 2025 23:30:46 +0900 Subject: [PATCH 3/5] top-k-frequent-elements solution --- top-k-frequent-elements/froggy1014.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 top-k-frequent-elements/froggy1014.js diff --git a/top-k-frequent-elements/froggy1014.js b/top-k-frequent-elements/froggy1014.js new file mode 100644 index 000000000..e3ab3f632 --- /dev/null +++ b/top-k-frequent-elements/froggy1014.js @@ -0,0 +1,20 @@ +/** + * @param {number[]} nums + * @param {number} k + * @return {number[]} + */ +var topKFrequent = function (nums, k) { + const map = new Map(); + for (let n = 0; n < nums.length; n++) { + map.has(nums[n]) + ? map.set(nums[n], map.get(nums[n]) + 1) + : map.set(nums[n], 1); + } + + return Array.from(map.entries()) + .sort(([key1, value1], [key2, value2]) => value2 - value1) + .slice(0, k) + .map((v) => v[0]); +}; + +console.log(topKFrequent([1, 1, 1, 2, 2, 3], 2)); From 7900ad0e628a825734a6002878f5f55243036ea6 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 5 Apr 2025 17:01:16 +0900 Subject: [PATCH 4/5] longest-consecutive-sequence solution --- longest-consecutive-sequence/froggy1014.js | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 longest-consecutive-sequence/froggy1014.js diff --git a/longest-consecutive-sequence/froggy1014.js b/longest-consecutive-sequence/froggy1014.js new file mode 100644 index 000000000..398c8e095 --- /dev/null +++ b/longest-consecutive-sequence/froggy1014.js @@ -0,0 +1,31 @@ +/** + * @param {number[]} nums + * @return {number} + */ + +// 시간복잡도: O(n) +var longestConsecutive = function (nums) { + let longest = 0; + + let set = new Set(nums); + + for (let num of nums) { + if (set.has(num - 1)) { + continue; + } + + let count = 1; + let currentNum = num; + + while (set.has(currentNum + 1)) { + count++; + currentNum++; + } + longest = Math.max(longest, count); + } + return longest; +}; + +console.log(longestConsecutive([100, 4, 200, 1, 3, 2])); // 4 +console.log(longestConsecutive([0, 3, 7, 2, 5, 8, 4, 6, 0, 1])); // 9 +console.log(longestConsecutive([1, 0, 1, 2])); // 3 From 9252f9c07c4f5942766efed9dec148b9c471417f Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 5 Apr 2025 19:31:24 +0900 Subject: [PATCH 5/5] horse robber solution --- house-robber/froggy1014.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 house-robber/froggy1014.js diff --git a/house-robber/froggy1014.js b/house-robber/froggy1014.js new file mode 100644 index 000000000..75f0bbab6 --- /dev/null +++ b/house-robber/froggy1014.js @@ -0,0 +1,20 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var rob = function (nums) { + if (nums.length === 0) return 0; + if (nums.length === 1) return nums[0]; + + const dp = new Array(nums.length + 1); + dp[0] = 0; + dp[1] = nums[0]; + for (let i = 2; i < dp.length; i++) { + dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i - 1]); + } + return dp[dp.length - 1]; +}; + +const nums = [2, 7, 9, 3, 1]; + +console.log(rob(nums));