Skip to content
Merged
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
35 changes: 35 additions & 0 deletions contains-duplicate/socow.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# 문제 내용
# 배열 nums에 같은 값이 2번 이상 등장하면 True, 아니면 False.
# 가장 실전적인 방법: 해시셋(Set)으로 한 번씩 보며 등장 여부 체크
# → 이미 본 값이면 바로 True 반환(조기 종료).

# 문제 풀이 설명
# set은 중복을 허용하지 않는 집합이다
# 리스트르 set으로 바꾸면 중복이 제거된다
# 따라서 길이를 비교하면 중복 여부를 알 수 있다

# 중복이 있는 경우
# >>> nums = [1,2,3,2]
# >>> len(nums)
# 4
# >>> set(nums)
# {1, 2, 3}
# >>> len(set(nums))
# 3
# >>> len(nums) != len(set(nums))
# True

# 중복이 없는 경우
# >>> nums = [1,2,3]
# >>> len(nums)
# 3
# >>> set(nums)
# {1, 2, 3}
# >>> len(set(nums))
# 3
# >>> len(nums) != len(set(nums))
# False
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
return len(nums) != len(set(nums))

16 changes: 16 additions & 0 deletions two-sum/socow.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 1. 일단 딕셔너리(num_map)를 만들어서 숫자랑 인덱스를 저장한다.
# 2. 현재 숫자와 target을 뺀 결과(보충값, complement)를 계산한다.
# 3. 그 complement가 이미 딕셔너리에 있다면?
# → 그 숫자와 현재 숫자가 합쳐서 target이 된다는 뜻!
# 4. 없다면 현재 숫자를 딕셔너리에 저장해서 다음에 대비한다.

class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
num_map = {}

for i, num in enumerate(nums):
complement = target - num

if complement in num_map:
return [num_map[complement], i]
num_map[num] = i