diff --git a/3sum/jinah92.py b/3sum/jinah92.py new file mode 100644 index 000000000..65e92ca91 --- /dev/null +++ b/3sum/jinah92.py @@ -0,0 +1,20 @@ +# 공간복잡도 : O(1), 시간복잡도 : O(N^2) +class Solution: + def threeSum(self, nums: List[int]) -> List[List[int]]: + three_sums = set() + nums.sort() + + for i in range(len(nums)-2): + low, high = i + 1, len(nums)-1 + while low < high: + three_sum = nums[i] + nums[high] + nums[low] + if three_sum < 0: + low += 1 + elif three_sum > 0: + high -= 1 + else: + three_sums.add((nums[i], nums[high], nums[low])) + low, high = low+1, high-1 + + return list(three_sums) + diff --git a/climbing-stairs/jinah92.py b/climbing-stairs/jinah92.py new file mode 100644 index 000000000..b51d2cc84 --- /dev/null +++ b/climbing-stairs/jinah92.py @@ -0,0 +1,11 @@ +# 공간복잡도: O(1), 시간복잡도: O(n) +class Solution: + def climbStairs(self, n: int) -> int: + if n < 3: + return n + + prev, curr = 1, 2 + for num in range(3, n+1): + prev, curr = curr, prev + curr + + return curr diff --git a/valid-anagram/jinah92.py b/valid-anagram/jinah92.py new file mode 100644 index 000000000..3187f7718 --- /dev/null +++ b/valid-anagram/jinah92.py @@ -0,0 +1,14 @@ +# 공간복잡도: O(n), 시간복잡도: O(n) +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + char_set_1, char_set_2 = {}, {} + + for ch in s: + char_set_1[ch] = 0 if ch not in char_set_1 else char_set_1[ch] + 1 + + for ch in t: + char_set_2[ch] = 0 if ch not in char_set_2 else char_set_2[ch] + 1 + + # dictionary의 모든 요소 종류와 개수가 일치해야 함 + return char_set_1 == char_set_2 +