From f6a648d19c111a4cf7391d34dbf7bff7c9911916 Mon Sep 17 00:00:00 2001 From: juhui Date: Thu, 13 Nov 2025 22:30:08 +0900 Subject: [PATCH 1/3] contains-duplicate solution --- contains-duplicate/juhui-jeong.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 contains-duplicate/juhui-jeong.ts diff --git a/contains-duplicate/juhui-jeong.ts b/contains-duplicate/juhui-jeong.ts new file mode 100644 index 000000000..4ffe9d646 --- /dev/null +++ b/contains-duplicate/juhui-jeong.ts @@ -0,0 +1,16 @@ +/* +시간 복잡도: O(n) +공간 복잡도: O(n) +*/ +function containsDuplicate(nums: number[]): boolean { + const seen = new Set(); + + for (const num of nums) { + if (seen.has(num)) { + return true; + } + seen.add(num); + } + + return false; +} From 7bd21e19a76c0cf6ce63bb9c6a3d4d6e5aca9257 Mon Sep 17 00:00:00 2001 From: juhui Date: Fri, 14 Nov 2025 16:36:56 +0900 Subject: [PATCH 2/3] two sum solution --- two-sum/juhui-jeong.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 two-sum/juhui-jeong.ts diff --git a/two-sum/juhui-jeong.ts b/two-sum/juhui-jeong.ts new file mode 100644 index 000000000..0a7c48a26 --- /dev/null +++ b/two-sum/juhui-jeong.ts @@ -0,0 +1,41 @@ +/* +시간 복잡도: O(n) +공간 복잡도: O(n) +*. +function twoSum(nums: number[], target: number): number[] { + const map = new Map(); + + for (let i = 0; i < nums.length; i++) { + const num = nums[i]; + const diff = target - num; + + if (map.has(diff)) { + return [map.get(diff)!, i]; + } + + map.set(num, i); + } + + return []; +} + +/* +이전 풀이 +시간 복잡도: O(n²) +공간 복잡도: O(1) +function twoSum(nums: number[], target: number): number[] { + for (let i = 0; i < nums.length; i++) { + for (let j = 0; j < nums.length; j++) { + // 동일한 index일 때는 안됨. + if (i === j) { + continue; + } + if (nums[i] + nums[j] === target) { + return [i, j]; + } + } + return []; + } +} + +*/ From a70f1b6f3f3764742f2c4c2b686d4b453196b247 Mon Sep 17 00:00:00 2001 From: juhui Date: Sat, 15 Nov 2025 11:56:27 +0900 Subject: [PATCH 3/3] top k frequent elements solution --- top-k-frequent-elements/juhui-jeong.ts | 26 ++++++++++++++++++++++++++ two-sum/juhui-jeong.ts | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 top-k-frequent-elements/juhui-jeong.ts diff --git a/top-k-frequent-elements/juhui-jeong.ts b/top-k-frequent-elements/juhui-jeong.ts new file mode 100644 index 000000000..65a7fdd33 --- /dev/null +++ b/top-k-frequent-elements/juhui-jeong.ts @@ -0,0 +1,26 @@ +/* +시간 복잡도: O(n²) +공간 복잡도: O(n) +*/ +function topKFrequent(nums: number[], k: number): number[] { + const map = new Map(); + let numLength: number[] = nums; + let mapArray; + + while (numLength.length > 0) { + // 현재 기준 숫자 + const current = numLength[0]; + // 갯수 확인 + const elementNum = numLength.filter((n) => n === current); + // 확인한 숫자 제거 + const filteredNum = numLength.filter((n) => n !== current); + + numLength = filteredNum; + map.set(current, elementNum.length); + } + mapArray = [...map]; + mapArray.sort((a, b) => b[1] - a[1]); + + // 상위 k개 num만 반환 + return mapArray.slice(0, k).map(([num, _]) => num); +} diff --git a/two-sum/juhui-jeong.ts b/two-sum/juhui-jeong.ts index 0a7c48a26..6cf9214a8 100644 --- a/two-sum/juhui-jeong.ts +++ b/two-sum/juhui-jeong.ts @@ -1,7 +1,7 @@ /* 시간 복잡도: O(n) 공간 복잡도: O(n) -*. +*/ function twoSum(nums: number[], target: number): number[] { const map = new Map();