diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/169. Majority Element.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/169. Majority Element.py" new file mode 100644 index 00000000..083b6137 --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/169. Majority Element.py" @@ -0,0 +1,11 @@ +class Solution: + def majorityElement(self, nums: list[int]) -> int: + n = len(nums) + majority = n/2 + + counter = Counter(nums) + for num, freq in counter.items(): + if freq >= majority: + return num + + return -1 diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/242. Valid Anagram.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/242. Valid Anagram.py" new file mode 100644 index 00000000..a9f2ca06 --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/242. Valid Anagram.py" @@ -0,0 +1,12 @@ +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + if len(t) != len(s): + return False + + counter1 = Counter(s) + counter2 = Counter(t) + + for char1, freq in counter1.items(): + if counter2[char1] != freq: + return False + return True diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/413. Arithmetic Slices.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/413. Arithmetic Slices.py" new file mode 100644 index 00000000..07fdf0e6 --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/413. Arithmetic Slices.py" @@ -0,0 +1,40 @@ +# + +''' +1. 아이디어 : +diff가 다를때마다 자른다. +자른 길이를 재귀함수를 통해 경우의 수를 구한다 + +2. 시간복잡도 : + O(n + n) + +3. 자료구조/알고리즘 : +dfs + +''' +class Solution: + def numberOfArithmeticSlices(self, nums: list[int]) -> int: + if len(nums) <3: + return 0 + + @cache + def calc(n): + return n // 3 if n <= 3 else n-2 + calc(n-1) + + ans = 0 + prevs = [nums[0], nums[1]] + diff = nums[1] - nums[0] + + for num in nums[2:]: + if num - prevs[-1] == diff: + prevs.append(num) + + elif num - prevs[-1] != diff: + if len(prevs) >= 3: + ans += calc(len(prevs)) + + diff = num - prevs[-1] + prevs = [prevs[-1], num] + ans += calc(len(prevs)) + return ans +