From 75bcdb5645dac215dd80f1424bb60e45059e5683 Mon Sep 17 00:00:00 2001 From: krokerdile Date: Mon, 31 Mar 2025 16:17:33 +0900 Subject: [PATCH 1/9] contains-duplicate solution --- contains-duplicate/krokerdile.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 contains-duplicate/krokerdile.js diff --git a/contains-duplicate/krokerdile.js b/contains-duplicate/krokerdile.js new file mode 100644 index 000000000..e04d9b5f5 --- /dev/null +++ b/contains-duplicate/krokerdile.js @@ -0,0 +1,22 @@ +/** + * @param {number[]} nums + * @return {boolean} + */ +var containsDuplicate = function(nums) { + let dict = new Map(); + + nums.forEach((num)=>{ + if(dict.has(num)){ + dict.set(num, dict.get(num)+1); + }else{ + dict.set(num, 1); + } + }) + + for (const num of nums) { + if(dict.get(num) >= 2){ + return true; + } + } + return false; +}; \ No newline at end of file From 27960eff48d04a7549ea6452ff302ae4d6dc7818 Mon Sep 17 00:00:00 2001 From: krokerdile Date: Mon, 31 Mar 2025 16:22:15 +0900 Subject: [PATCH 2/9] =?UTF-8?q?commit-duplicate=20=EA=B0=9C=ED=96=89?= =?UTF-8?q?=EB=AC=B8=EC=9E=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/krokerdile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contains-duplicate/krokerdile.js b/contains-duplicate/krokerdile.js index e04d9b5f5..3fa8eeb92 100644 --- a/contains-duplicate/krokerdile.js +++ b/contains-duplicate/krokerdile.js @@ -19,4 +19,4 @@ var containsDuplicate = function(nums) { } } return false; -}; \ No newline at end of file +}; From 84d172b96ddea016a60e46b60f1c0c0c17467ad3 Mon Sep 17 00:00:00 2001 From: krokerdile Date: Mon, 31 Mar 2025 16:27:49 +0900 Subject: [PATCH 3/9] =?UTF-8?q?=EC=A7=81=EC=A0=84=20PR=EC=9D=84=20?= =?UTF-8?q?=EC=B0=B8=EA=B3=A0=ED=95=B4=EC=84=9C=20contains-duplicate=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - forEach를 사용하지 않고 for of문을 사용하여 반복문을 돌리는 중간에 2회 이상 추가시 종료되도록 --- contains-duplicate/krokerdile.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/contains-duplicate/krokerdile.js b/contains-duplicate/krokerdile.js index 3fa8eeb92..17c709498 100644 --- a/contains-duplicate/krokerdile.js +++ b/contains-duplicate/krokerdile.js @@ -2,6 +2,11 @@ * @param {number[]} nums * @return {boolean} */ + +/** + * 1차 풀이 + * - Map을 사용하여 각 숫자의 개수를 세는 방법 + */ var containsDuplicate = function(nums) { let dict = new Map(); @@ -20,3 +25,24 @@ var containsDuplicate = function(nums) { } return false; }; + +/** + * 2차풀이 + * - Map을 사용하여 각 숫자의 개수를 세는 방법 + * - forEach를 사용하지 않고 for of문을 사용하여 반복문을 돌리는 방법 + */ +var containsDuplicate = function(nums) { + let dict = new Map(); + + for (const num of nums) { + if(dict.has(num)){ + dict.set(num, dict.get(num)+1); + }else{ + dict.set(num, 1); + } + if(dict.get(num) >= 2){ + return true; + } + } + return false; +}; From 67cd52e5716ff949a8d82f49332d9a27e732a6c2 Mon Sep 17 00:00:00 2001 From: krokerdile Date: Tue, 1 Apr 2025 13:57:39 +0900 Subject: [PATCH 4/9] two-sum solution --- two-sum/krokerdile.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 two-sum/krokerdile.js diff --git a/two-sum/krokerdile.js b/two-sum/krokerdile.js new file mode 100644 index 000000000..14ba16cde --- /dev/null +++ b/two-sum/krokerdile.js @@ -0,0 +1,15 @@ +/** + * @param {number[]} nums + * @param {number} target + * @return {number[]} + */ +var twoSum = function(nums, target) { + let dict = new Map(); + + for(const [index, num] of nums.entries()){ + if(dict.has(target-num) && dict.get(target-num) != index){ + return [dict.get(target-num),index]; + } + dict.set(num, index); + } +}; \ No newline at end of file From af4419fc5249e647d1355aa3b2fa1a397ad88851 Mon Sep 17 00:00:00 2001 From: krokerdile Date: Tue, 1 Apr 2025 13:58:43 +0900 Subject: [PATCH 5/9] =?UTF-8?q?two-sum=20=EA=B0=9C=ED=96=89=20=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- two-sum/krokerdile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/two-sum/krokerdile.js b/two-sum/krokerdile.js index 14ba16cde..ce0664586 100644 --- a/two-sum/krokerdile.js +++ b/two-sum/krokerdile.js @@ -12,4 +12,4 @@ var twoSum = function(nums, target) { } dict.set(num, index); } -}; \ No newline at end of file +}; From 75af223423faa48311c07cfcb37b026723ba3bad Mon Sep 17 00:00:00 2001 From: krokerdile Date: Wed, 2 Apr 2025 15:09:47 +0900 Subject: [PATCH 6/9] top-k-frequent-elements solution --- top-k-frequent-elements/krokerdile.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 top-k-frequent-elements/krokerdile.js diff --git a/top-k-frequent-elements/krokerdile.js b/top-k-frequent-elements/krokerdile.js new file mode 100644 index 000000000..a1172fdc1 --- /dev/null +++ b/top-k-frequent-elements/krokerdile.js @@ -0,0 +1,26 @@ +/** + * @param {number[]} nums + * @param {number} k + * @return {number[]} + */ +var topKFrequent = function(nums, k) { + let dict = new Map(); + let temp = Array.from(new Set([...nums])); + for(const num of nums){ + if(dict.has(num)){ + dict.set(num, dict.get(num)+1); + }else{ + dict.set(num,1); + } + } + + temp = temp.sort((a,b)=>{ + let aCount = dict.get(a); + let bCount = dict.get(b); + + return bCount - aCount; + }) + + let slice = temp.slice(0,k); + return slice; +}; \ No newline at end of file From b8d94365c5b3f31c9e706d325abc7339b62acc1a Mon Sep 17 00:00:00 2001 From: krokerdile Date: Wed, 2 Apr 2025 21:20:45 +0900 Subject: [PATCH 7/9] =?UTF-8?q?top-k-frequent-elements=20=EA=B0=9C?= =?UTF-8?q?=ED=96=89=20=EB=AC=B8=EC=9E=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- top-k-frequent-elements/krokerdile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/top-k-frequent-elements/krokerdile.js b/top-k-frequent-elements/krokerdile.js index a1172fdc1..979e92d1f 100644 --- a/top-k-frequent-elements/krokerdile.js +++ b/top-k-frequent-elements/krokerdile.js @@ -23,4 +23,4 @@ var topKFrequent = function(nums, k) { let slice = temp.slice(0,k); return slice; -}; \ No newline at end of file +}; From 45241aa5650d61ac0901acbbe932d0760e79921e Mon Sep 17 00:00:00 2001 From: krokerdile Date: Thu, 3 Apr 2025 23:03:20 +0900 Subject: [PATCH 8/9] longest-consecutive-seuence solution --- longest-consecutive-sequence/krokerdile.js | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 longest-consecutive-sequence/krokerdile.js diff --git a/longest-consecutive-sequence/krokerdile.js b/longest-consecutive-sequence/krokerdile.js new file mode 100644 index 000000000..bd53b8db6 --- /dev/null +++ b/longest-consecutive-sequence/krokerdile.js @@ -0,0 +1,28 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var longestConsecutive = function(nums) { + if (nums.length === 0) return 0; + + const numSet = new Set(nums); + let maxLength = 0; + + for (let num of numSet) { + // 연속 수열의 시작점인지 확인 + if (!numSet.has(num - 1)) { + let currentNum = num; + let currentLength = 1; + + // 연속된 숫자 있는 동안 증가 + while (numSet.has(currentNum + 1)) { + currentNum += 1; + currentLength += 1; + } + + maxLength = Math.max(maxLength, currentLength); + } + } + + return maxLength; +}; From 985dc96bd83ee1babb321d16525ac0c6acd1144d Mon Sep 17 00:00:00 2001 From: krokerdile Date: Fri, 4 Apr 2025 21:15:27 +0900 Subject: [PATCH 9/9] house-rubber solution --- house-robber/krokerdile.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 house-robber/krokerdile.js diff --git a/house-robber/krokerdile.js b/house-robber/krokerdile.js new file mode 100644 index 000000000..7ab2d2fa4 --- /dev/null +++ b/house-robber/krokerdile.js @@ -0,0 +1,18 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var rob = function(nums) { + if (nums.length === 0) return 0; + if (nums.length === 1) return nums[0]; + + let dp = new Array(nums.length); + dp[0] = nums[0]; + dp[1] = Math.max(nums[0], nums[1]); + + for (let i = 2; i < nums.length; i++) { + dp[i] = Math.max(dp[i - 1], nums[i] + dp[i - 2]); + } + + return dp[nums.length - 1]; +};