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; +} 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 new file mode 100644 index 000000000..6cf9214a8 --- /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 []; + } +} + +*/