From 0f9d868fb54b5450770580faf62e2d964f0cc34e Mon Sep 17 00:00:00 2001 From: youngduck Date: Mon, 9 Nov 2026 17:17:41 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20Contains=20Duplicate=20=ED=92=80?= =?UTF-8?q?=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/youngduck.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 contains-duplicate/youngduck.ts diff --git a/contains-duplicate/youngduck.ts b/contains-duplicate/youngduck.ts new file mode 100644 index 0000000000..367b4e3986 --- /dev/null +++ b/contains-duplicate/youngduck.ts @@ -0,0 +1,9 @@ +// 시간복잡도 : new Set은 n번 x add O(1) 인 함수, 즉 배열의 모든 원소를 한번씩 순회하므로 O(n) +// 공간복잡도 : n개의 원소를 Set에 저장하므로 O(n) + +function containsDuplicate(nums: number[]): boolean { + + const uniqueNumsSet = new Set(nums); + + return uniqueNumsSet.size !== nums.length; +}; \ No newline at end of file From 460d45eab9ef109fd48c390c0efa7341b2aaadbd Mon Sep 17 00:00:00 2001 From: youngduck Date: Tue, 10 Nov 2026 08:58:28 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20Contains=20Dupilicate=20=EA=B0=9C?= =?UTF-8?q?=ED=96=89=EB=9D=BC=EC=9D=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/youngduck.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contains-duplicate/youngduck.ts b/contains-duplicate/youngduck.ts index 367b4e3986..456cd52eca 100644 --- a/contains-duplicate/youngduck.ts +++ b/contains-duplicate/youngduck.ts @@ -6,4 +6,5 @@ function containsDuplicate(nums: number[]): boolean { const uniqueNumsSet = new Set(nums); return uniqueNumsSet.size !== nums.length; -}; \ No newline at end of file +}; + From 9bf692439509a5cb9437a368f7e4484dcfe37d9b Mon Sep 17 00:00:00 2001 From: youngduck Date: Fri, 13 Nov 2026 16:47:52 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20two-sum=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- two-sum/youngduck.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 two-sum/youngduck.ts diff --git a/two-sum/youngduck.ts b/two-sum/youngduck.ts new file mode 100644 index 0000000000..3f4297fc75 --- /dev/null +++ b/two-sum/youngduck.ts @@ -0,0 +1,29 @@ +// 시간복잡도 : 반복문한번에 완결된다 생각하여 O(N)인줄 알았는데 O(N^2)풀이라고 하네요, 해시맵으로 구현하는방법을 추가적으로 학습했습니다. +// 공간복잡도 : O(1) 입력값이 커져도 변수개수는 일정 + +function twoSum(nums: number[], target: number): number[] { + // 이중반복문이아니라 투포인터를 둬서 해결 + let left = 0, right = 1; + + while(left Date: Fri, 13 Nov 2026 18:03:29 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20k=20=EB=B9=88=EB=8F=84=EC=88=98=20?= =?UTF-8?q?=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- top-k-frequent-elements/youngduck.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 top-k-frequent-elements/youngduck.ts diff --git a/top-k-frequent-elements/youngduck.ts b/top-k-frequent-elements/youngduck.ts new file mode 100644 index 0000000000..61e5abad0e --- /dev/null +++ b/top-k-frequent-elements/youngduck.ts @@ -0,0 +1,27 @@ +// N은 nums의 길이, M은 서로 다른 숫자의 개수 +// 시간복잡도 : O(N + M log M) - N개 원소의 빈도를 세고, M개 항목을 빈도순으로 정렬 +// 공간복잡도 : O(M) - 서로 다른 숫자의 빈도를 Map에 저장하고 M개 항목의 배열 생성 + +function topKFrequent(nums: number[], k: number): number[] { + + // 숫자를 key, 등장 횟수를 value로 저장 + const FrequentMap = new Map(); + + for(const i of nums){ + if(FrequentMap.has(i)){ + // 이미 등장한 숫자는 횟수 증가. has로 확인했으므로 get의 결과가 undefined가 아님 + FrequentMap.set(i,FrequentMap.get(i)!+1); + } + else{ + // 처음 등장한 숫자는 1로 초기화 + FrequentMap.set(i,1); + } + } + + + return [...FrequentMap.entries()] // Map을 [숫자, 등장 횟수] 쌍의 배열로 변환 + .sort((a,b)=>b[1]-a[1]) // 등장 횟수를 기준으로 내림차순 정렬 + .slice(0,k) // 가장 많이 등장한 k개 항목 선택 + .map(([num])=>num); // 등장 횟수를 제외하고 숫자만 반환 +}; +