From b8001ee44ca557c920d719d1ed7a9134f226c701 Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Thu, 24 Jul 2025 18:23:18 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=F0=9F=93=9D=20Solved:=201weeks=20two=20sum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- two-sum/jangwonyoon.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 two-sum/jangwonyoon.js diff --git a/two-sum/jangwonyoon.js b/two-sum/jangwonyoon.js new file mode 100644 index 000000000..ffbd99679 --- /dev/null +++ b/two-sum/jangwonyoon.js @@ -0,0 +1,18 @@ +/** + * @param {number[]} nums + * @param {number} target + * @return {number[]} + */ +var twoSum = function(nums, target) { + const length = nums.length - 1; + + for (let i = 0; i < length; i++) { + for (let j = length; j > 0; j--) { + const sum = nums[i] + nums[j]; + + if (sum === target) { + return [i, j]; + } + } + } +}; \ No newline at end of file From 345fb9bd93f35a6922f1efdbacc9d96469da2e97 Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Thu, 24 Jul 2025 18:27:27 +0900 Subject: [PATCH 2/8] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Refactor:=20=EC=A4=84?= =?UTF-8?q?=EB=B0=94=EA=BF=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- two-sum/jangwonyoon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/two-sum/jangwonyoon.js b/two-sum/jangwonyoon.js index ffbd99679..33c23ee4d 100644 --- a/two-sum/jangwonyoon.js +++ b/two-sum/jangwonyoon.js @@ -15,4 +15,4 @@ var twoSum = function(nums, target) { } } } -}; \ No newline at end of file +}; From 0a1dec356d79d248fd078f7cf33f6f9318d204ac Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Thu, 24 Jul 2025 20:48:23 +0900 Subject: [PATCH 3/8] =?UTF-8?q?=F0=9F=93=9D=20Solved:=20#217?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/jangwonyoon.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 contains-duplicate/jangwonyoon.js diff --git a/contains-duplicate/jangwonyoon.js b/contains-duplicate/jangwonyoon.js new file mode 100644 index 000000000..b1414c3ff --- /dev/null +++ b/contains-duplicate/jangwonyoon.js @@ -0,0 +1,19 @@ +/** + * @param {number[]} nums + * @return {boolean} + */ +var containsDuplicate = function(nums) { + const sortedNums = nums.sort((a, b) => a - b); + const length = sortedNums.length - 1; + + for (let i = 0; i < length; i++) { + const left = nums[i]; + const right = nums[i + 1]; + + if (left === right) { + return true; + } + } + + return false; +}; From 3dde3ef23d3ad332309fe742412cf8612299a1e3 Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Thu, 24 Jul 2025 20:53:39 +0900 Subject: [PATCH 4/8] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix:=20#219?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- two-sum/jangwonyoon.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/two-sum/jangwonyoon.js b/two-sum/jangwonyoon.js index 33c23ee4d..39a0664d3 100644 --- a/two-sum/jangwonyoon.js +++ b/two-sum/jangwonyoon.js @@ -7,12 +7,14 @@ var twoSum = function(nums, target) { const length = nums.length - 1; for (let i = 0; i < length; i++) { - for (let j = length; j > 0; j--) { + for(let j = length; j > 0; j--) { const sum = nums[i] + nums[j]; - if (sum === target) { - return [i, j]; + if (i !== j) { + if (sum === target) { + return [i , j]; + } } } } -}; +}; \ No newline at end of file From 06e54c8512d744f40c34d670f573ad139fcede98 Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Thu, 24 Jul 2025 21:13:01 +0900 Subject: [PATCH 5/8] =?UTF-8?q?=F0=9F=93=9D=20Docs:=20solved=202=20#219?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- two-sum/jangwonyoon.js | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/two-sum/jangwonyoon.js b/two-sum/jangwonyoon.js index 39a0664d3..7e7c57d31 100644 --- a/two-sum/jangwonyoon.js +++ b/two-sum/jangwonyoon.js @@ -1,4 +1,9 @@ /** + * solve 1 + * + * 시간 복잡도: O(n^2) + * 공간 복잡도: O(1) + * * @param {number[]} nums * @param {number} target * @return {number[]} @@ -17,4 +22,29 @@ var twoSum = function(nums, target) { } } } -}; \ No newline at end of file +}; + + +/** + * solve 2 + * + * 시간 복잡도: O(n) + * 공간 복잡도: O(n) + * + * @param {number[]} nums + * @param {number} target + * @return {number[]} + */ +var twoSum = function(nums, target) { + const map = new Map(); + + for (let i = 0; i < nums.length; i++) { + const temp = target - nums[i]; + + if (map.has(temp)) { + return [map.get(temp), i]; + } + + map.set(nums[i], i); + } +}; From 2f982d3f0480e247481130cacf16d7c41e0ba41e Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Thu, 24 Jul 2025 21:52:25 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=F0=9F=93=9D=20Docs:=20solved=20#237?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- top-k-frequent-elements/jangwonyoon.js | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 top-k-frequent-elements/jangwonyoon.js diff --git a/top-k-frequent-elements/jangwonyoon.js b/top-k-frequent-elements/jangwonyoon.js new file mode 100644 index 000000000..c41f81795 --- /dev/null +++ b/top-k-frequent-elements/jangwonyoon.js @@ -0,0 +1,28 @@ +/** + * @param {number[]} nums + * @param {number} k + * @return {number[]} + */ + +/* + * 시간 복잡도: O(n log n) + * 공간 복잡도: O(n) + * + * 1. map 구조를 사용해서 몇번 나왔는지 카운트한다. + * 2. map 구조에서 가장 큰 수를 구한다. +*/ +var topKFrequent = function(nums, k) { + const map = new Map(); + + for (let i = 0; i < nums.length; i++) { + if (!map.has(nums[i])) { + map.set(nums[i], 1); + } else { + map.set(nums[i], map.get(nums[i]) + 1); + } + } + + const result = [...map.entries()].sort((a, b) => b[1] - a[1]); + + return result.slice(0, k).map((val) => val[0]); +}; From 694cf2341dffa15fee59ce9b8b154e7432218d6e Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Fri, 25 Jul 2025 10:39:15 +0900 Subject: [PATCH 7/8] =?UTF-8?q?=F0=9F=93=9D=20Docs:=20solved=20#240?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- longest-consecutive-sequence/jangwonyoon.js | 33 +++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 longest-consecutive-sequence/jangwonyoon.js diff --git a/longest-consecutive-sequence/jangwonyoon.js b/longest-consecutive-sequence/jangwonyoon.js new file mode 100644 index 000000000..3485f4059 --- /dev/null +++ b/longest-consecutive-sequence/jangwonyoon.js @@ -0,0 +1,33 @@ +/** + * 시간 복잡도: O(n log n) + * 공간 복잡도: O(n) + * + * @param {number[]} nums + * @return {number} + */ +var longestConsecutive = function(nums) { + // 예외 + if (nums.length === 0) { + return 0; + } + + const sortedArr = [...new Set(nums)].sort((a, b) => a - b); + + let result = 1; + let consecutive = 1; + + for (let i = 0; i < sortedArr.length - 1; i++) { + const curr = sortedArr[i]; + const next = sortedArr[i + 1]; + + if (next === curr + 1) { + consecutive += 1; + } else { + consecutive = 1; + } + + result = Math.max(result, consecutive); + } + + return result; +}; From 05ffb72323dbce1ed0445fd3dcc67d4122391208 Mon Sep 17 00:00:00 2001 From: jangwonyoon Date: Fri, 25 Jul 2025 11:23:04 +0900 Subject: [PATCH 8/8] =?UTF-8?q?=F0=9F=93=9D=20Docs:=20solved2=20#240?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- longest-consecutive-sequence/jangwonyoon.js | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/longest-consecutive-sequence/jangwonyoon.js b/longest-consecutive-sequence/jangwonyoon.js index 3485f4059..1ddb29a87 100644 --- a/longest-consecutive-sequence/jangwonyoon.js +++ b/longest-consecutive-sequence/jangwonyoon.js @@ -1,4 +1,6 @@ /** + * solve 1 + * * 시간 복잡도: O(n log n) * 공간 복잡도: O(n) * @@ -31,3 +33,28 @@ var longestConsecutive = function(nums) { return result; }; + +/** + * solve 2 + * + * 시간 복잡도: O(n) + * 공간 복잡도: O(n) + * + * @param {number[]} nums + * @return {number} + */ +var longestConsecutive = function(nums) { + let longest = 0; + const numSet = new Set(nums); + + for (const num of numSet) { + if (numSet.has(num - 1)) continue; + let length = 1; + + while (numSet.has(num + length)) length++; + + longest = Math.max(length, longest); + } + + return longest; +}