From 511c7932d99045a532e9ddf525848683af30d306 Mon Sep 17 00:00:00 2001 From: MinjiJeon Date: Tue, 22 Jul 2025 22:17:38 +0900 Subject: [PATCH 1/5] contains duplicate solution --- contains-duplicate/minji0214.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 contains-duplicate/minji0214.ts diff --git a/contains-duplicate/minji0214.ts b/contains-duplicate/minji0214.ts new file mode 100644 index 000000000..0facbda9c --- /dev/null +++ b/contains-duplicate/minji0214.ts @@ -0,0 +1,10 @@ +function containsDuplicate(nums: number[]): boolean { + let answer = false + for(let i = 0; i< nums.length; i ++ ){ + if(nums.findIndex((value)=> value === nums[i]) !== i){ + answer = true + return false + } + } + return answer +}; \ No newline at end of file From 6c45680589a193fb1c13f65f448658828b8bd357 Mon Sep 17 00:00:00 2001 From: MinjiJeon Date: Tue, 22 Jul 2025 22:18:45 +0900 Subject: [PATCH 2/5] two-sum solution --- two-sum/minji0214.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 two-sum/minji0214.ts diff --git a/two-sum/minji0214.ts b/two-sum/minji0214.ts new file mode 100644 index 000000000..bb339ce95 --- /dev/null +++ b/two-sum/minji0214.ts @@ -0,0 +1,11 @@ +function twoSum(nums: number[], target: number): number[] { + let answer = [] + for(let i = 0 ; i < nums.length; i ++){ + let temp = target - nums[i] + if (nums.includes(temp) && temp != nums[i]) { + const index = nums.findIndex((test) => test === temp ) + answer.push(index) +} + } +return answer +}; \ No newline at end of file From 1cf052c447b217ff6e73a2fafd17c9e6e099febe Mon Sep 17 00:00:00 2001 From: MinjiJeon Date: Wed, 23 Jul 2025 22:20:00 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=EB=A6=AC=ED=84=B4=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/minji0214.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contains-duplicate/minji0214.ts b/contains-duplicate/minji0214.ts index 0facbda9c..d56ea5ee7 100644 --- a/contains-duplicate/minji0214.ts +++ b/contains-duplicate/minji0214.ts @@ -3,8 +3,9 @@ function containsDuplicate(nums: number[]): boolean { for(let i = 0; i< nums.length; i ++ ){ if(nums.findIndex((value)=> value === nums[i]) !== i){ answer = true - return false + break; } } return answer -}; \ No newline at end of file +}; +//-> time lit 초과 오류 발생 \ No newline at end of file From 9b59aebd0310201f8464895acf8161955664da98 Mon Sep 17 00:00:00 2001 From: MinjiJeon Date: Wed, 23 Jul 2025 22:31:46 +0900 Subject: [PATCH 4/5] fix: line lint --- contains-duplicate/minji0214.ts | 2 +- two-sum/minji0214.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contains-duplicate/minji0214.ts b/contains-duplicate/minji0214.ts index d56ea5ee7..3d6bc9036 100644 --- a/contains-duplicate/minji0214.ts +++ b/contains-duplicate/minji0214.ts @@ -8,4 +8,4 @@ function containsDuplicate(nums: number[]): boolean { } return answer }; -//-> time lit 초과 오류 발생 \ No newline at end of file +//-> time limit 초과 오류 발생 diff --git a/two-sum/minji0214.ts b/two-sum/minji0214.ts index bb339ce95..b7d506621 100644 --- a/two-sum/minji0214.ts +++ b/two-sum/minji0214.ts @@ -8,4 +8,4 @@ function twoSum(nums: number[], target: number): number[] { } } return answer -}; \ No newline at end of file +}; From 70720d2aeb356c82d95ebb0c1843b7f7b8464fe6 Mon Sep 17 00:00:00 2001 From: MinjiJeon Date: Wed, 23 Jul 2025 23:40:30 +0900 Subject: [PATCH 5/5] =?UTF-8?q?contains=20duplicate=20=EC=98=A4=EB=8B=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contains-duplicate/minji0214.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/contains-duplicate/minji0214.ts b/contains-duplicate/minji0214.ts index 3d6bc9036..b5603e292 100644 --- a/contains-duplicate/minji0214.ts +++ b/contains-duplicate/minji0214.ts @@ -9,3 +9,19 @@ function containsDuplicate(nums: number[]): boolean { return answer }; //-> time limit 초과 오류 발생 +//시간복잡도 +// for + findIndex O(n²) ❌ +// for + Set or Map O(n) ✅ +//중복 여부만 체크할 때는 무조건 Set을 쓰는 게 효율적 +// includes, findIndex, indexOf는 절대 루프 안에서 쓰지 말것 — 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; // 중복 없음 +} +//Set : 중복 없는 값을의 모음. 배열처럼 생겼지만, 중복을 허용하지 않음 (중복제거) +//Map : key → value 형태로 저장하는 객체 (검색 수정) +