Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions contains-duplicate/daehyun99.py

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set
  • 설명: 이 코드는 중복 체크를 위해 해시셋을 활용하여 빠른 검색을 수행하는 방식으로, 해시 맵 또는 해시 셋 패턴에 속합니다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space O(n)

피드백: 집합을 이용하여 각 원소를 한 번씩 검사하므로 시간 복잡도는 선형이며, 집합 저장을 위해 선형 공간이 필요합니다.

개선 제안: 현재 구현이 적절해 보입니다.

💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
seen = set()

for num in nums:
if num in seen:
return True
else:
seen.add(num)
return False
24 changes: 24 additions & 0 deletions two-sum/daehyun99.py

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set
  • 설명: 첫 번째 솔루션은 set을 활용하여 빠른 검색을 수행하므로 해시 맵 또는 해시 셋 패턴에 속합니다. 이 방법은 시간 복잡도를 줄이기 위해 해시 자료구조를 사용합니다.

📊 시간/공간 복잡도 분석

ℹ️ 이 파일에는 2가지 풀이가 포함되어 있어 각각 분석합니다.

풀이 1: Solution.twoSum — Time: ❌ O(n) → O(n^2) / Space: ❌ O(2n) → O(n)
유저 분석 실제 분석 결과
Time O(n) O(n^2)
Space O(2n) O(n)

피드백: 이중 반복문으로 모든 쌍을 검사하므로 시간 복잡도는 제곱에 비례하며, 집합은 중복 검사와 인덱스 검색에 사용됩니다.

개선 제안: 이중 반복문 대신 해시맵을 활용하면 시간 복잡도를 O(n)으로 개선할 수 있습니다.

풀이 2: Solution.twoSum — Time: ✅ O(n^2) → O(n^2) / Space: ✅ O(1) → O(1)
유저 분석 실제 분석 결과
Time O(n^2) O(n^2)
Space O(1) O(1)

피드백: 단순 이중 반복문으로 모든 쌍을 검사하므로 시간 복잡도는 제곱이며, 공간은 상수입니다.

개선 제안: 이중 반복문 대신 해시맵을 활용하면 시간 복잡도를 O(n)으로 개선할 수 있습니다.

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Time: O(n)
# Space: O(2n)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
set_nums = set(nums)
for j in range(len(nums)-1, -1, -1):
val = target - nums[j]
if val in set_nums:
i = nums.index(val)
if i != j:
return [i, j]

"""
# Time: O(n^2)
# Space: O(1)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)-1):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]


"""
Loading