From ebd205a030bb3817a2ed06ec730e8448f335bff5 Mon Sep 17 00:00:00 2001 From: sangyoon Date: Mon, 17 Nov 2025 21:57:37 +0900 Subject: [PATCH 1/7] Week 02: Valid anagram solution --- valid-anagram/mandel-17.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 valid-anagram/mandel-17.py diff --git a/valid-anagram/mandel-17.py b/valid-anagram/mandel-17.py new file mode 100644 index 0000000000..35dfe24982 --- /dev/null +++ b/valid-anagram/mandel-17.py @@ -0,0 +1,15 @@ +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + def count_char(target_str): + dict_char = {} + for c in target_str: + dict_char[c] = dict_char.get(c, 0) + 1 + return dict_char + + dict_s = count_char(s) + dict_t = count_char(t) + + if dict_s == dict_t: + return True + return False + \ No newline at end of file From 737f84b9c799c971e4af701a9874e26a1e06ca71 Mon Sep 17 00:00:00 2001 From: sangyoon Date: Mon, 17 Nov 2025 22:04:52 +0900 Subject: [PATCH 2/7] Update new line --- valid-anagram/mandel-17.py | 1 - 1 file changed, 1 deletion(-) diff --git a/valid-anagram/mandel-17.py b/valid-anagram/mandel-17.py index 35dfe24982..ce331ce0c9 100644 --- a/valid-anagram/mandel-17.py +++ b/valid-anagram/mandel-17.py @@ -12,4 +12,3 @@ def count_char(target_str): if dict_s == dict_t: return True return False - \ No newline at end of file From 56446feb4e13cf460b5d8d77aad41053124299c3 Mon Sep 17 00:00:00 2001 From: mandel <86548085+mandel-17@users.noreply.github.com> Date: Mon, 17 Nov 2025 22:06:06 +0900 Subject: [PATCH 3/7] Update mandel-17.py --- valid-anagram/mandel-17.py | 1 + 1 file changed, 1 insertion(+) diff --git a/valid-anagram/mandel-17.py b/valid-anagram/mandel-17.py index ce331ce0c9..b0cdc69cc5 100644 --- a/valid-anagram/mandel-17.py +++ b/valid-anagram/mandel-17.py @@ -12,3 +12,4 @@ def count_char(target_str): if dict_s == dict_t: return True return False + From 39ccfaa97a5a922b8523e320e92cfe71ca35aef3 Mon Sep 17 00:00:00 2001 From: sangyoon Date: Sat, 22 Nov 2025 11:28:07 +0900 Subject: [PATCH 4/7] Week 02: climbing-stairs solution --- climbing-stairs/mandel-17.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 climbing-stairs/mandel-17.py diff --git a/climbing-stairs/mandel-17.py b/climbing-stairs/mandel-17.py new file mode 100644 index 0000000000..031c9118b6 --- /dev/null +++ b/climbing-stairs/mandel-17.py @@ -0,0 +1,23 @@ +class Solution: + def climbStairs(self, n: int) -> int: + def factorial(n): + result = 1 + for i in range(1, n+1): + result *= i + return result + + def combination(n, r): + top = factorial(n) + bottom = factorial(n-r) * factorial(r) + return top / bottom + + share = n // 2 + total = 1 + for i in range(1, share + 1): + combination_n = n - i + combination_r = i + + total += combination(combination_n, combination_r) + + return int(total) + \ No newline at end of file From 663d8270b2216923fb1a0781aca1b94ff6a62c42 Mon Sep 17 00:00:00 2001 From: mandel <86548085+mandel-17@users.noreply.github.com> Date: Sat, 22 Nov 2025 11:30:10 +0900 Subject: [PATCH 5/7] Update mandel-17.py --- climbing-stairs/mandel-17.py | 1 - 1 file changed, 1 deletion(-) diff --git a/climbing-stairs/mandel-17.py b/climbing-stairs/mandel-17.py index 031c9118b6..89507daaa9 100644 --- a/climbing-stairs/mandel-17.py +++ b/climbing-stairs/mandel-17.py @@ -20,4 +20,3 @@ def combination(n, r): total += combination(combination_n, combination_r) return int(total) - \ No newline at end of file From 0a8e5bafb76855c6f88ce999965d79d09c4aacb6 Mon Sep 17 00:00:00 2001 From: sangyoon Date: Sat, 22 Nov 2025 19:12:26 +0900 Subject: [PATCH 6/7] Week 2: Chage the code --- climbing-stairs/mandel-17.py | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/climbing-stairs/mandel-17.py b/climbing-stairs/mandel-17.py index 89507daaa9..2233946ad2 100644 --- a/climbing-stairs/mandel-17.py +++ b/climbing-stairs/mandel-17.py @@ -1,22 +1,14 @@ -class Solution: - def climbStairs(self, n: int) -> int: - def factorial(n): - result = 1 - for i in range(1, n+1): - result *= i - return result - - def combination(n, r): - top = factorial(n) - bottom = factorial(n-r) * factorial(r) - return top / bottom +import collections - share = n // 2 - total = 1 - for i in range(1, share + 1): - combination_n = n - i - combination_r = i - - total += combination(combination_n, combination_r) +class Solution: + num_dict = collections.defaultdict(int) - return int(total) + def climbStairs(self, n: int) -> int: + if n <= 2: + return n + + if self.num_dict[n]: + return self.num_dict[n] + + self.num_dict[n] = self.climbStairs(n-1) + self.climbStairs(n-2) + return self.num_dict[n] From 3f4a8e2c2341325adfecaaf57dcb6257a3f932f3 Mon Sep 17 00:00:00 2001 From: sangyoon Date: Sat, 22 Nov 2025 19:12:52 +0900 Subject: [PATCH 7/7] Week 2: Change the code --- valid-anagram/mandel-17.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/valid-anagram/mandel-17.py b/valid-anagram/mandel-17.py index b0cdc69cc5..2233946ad2 100644 --- a/valid-anagram/mandel-17.py +++ b/valid-anagram/mandel-17.py @@ -1,15 +1,14 @@ +import collections + class Solution: - def isAnagram(self, s: str, t: str) -> bool: - def count_char(target_str): - dict_char = {} - for c in target_str: - dict_char[c] = dict_char.get(c, 0) + 1 - return dict_char + num_dict = collections.defaultdict(int) - dict_s = count_char(s) - dict_t = count_char(t) + def climbStairs(self, n: int) -> int: + if n <= 2: + return n - if dict_s == dict_t: - return True - return False + if self.num_dict[n]: + return self.num_dict[n] + self.num_dict[n] = self.climbStairs(n-1) + self.climbStairs(n-2) + return self.num_dict[n]