From a05df43c52795751777ba5b086cd05cdd8f44c66 Mon Sep 17 00:00:00 2001 From: Won Joon Thomas Choi <113500771+724thomas@users.noreply.github.com> Date: Tue, 15 Sep 2026 22:35:40 +0900 Subject: [PATCH 1/2] Create 70. Climbing Stairs.py --- .../70. Climbing Stairs.py" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "leetcode3/\354\265\234\354\233\220\354\244\200/70. Climbing Stairs.py" diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/70. Climbing Stairs.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/70. Climbing Stairs.py" new file mode 100644 index 00000000..52607edc --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/70. Climbing Stairs.py" @@ -0,0 +1,24 @@ +# + +''' +1. 아이디어 : +x에 도달하기 위해서는 x-1에서 1칸 점프 + x-2에서 1칸 점프이므로, f(x) = f(x-1) + f(x-2) +길이 2의 배열을 활용하여 공간 절약 + +2. 시간복잡도 : + O(n) + +3. 자료구조/알고리즘 : +dp + +''' +class Solution: + def climbStairs(self, n: int) -> int: + if n == 1: + return n + + ans = [1,2] + for i in range(3, n+1): + ans = [ans[1],ans[0] + ans[1]] + return ans[1] + From bff2a7592d38bd52f8ebe1ffba86f03c78f7199b Mon Sep 17 00:00:00 2001 From: Won Joon Thomas Choi <113500771+724thomas@users.noreply.github.com> Date: Tue, 15 Sep 2026 22:35:54 +0900 Subject: [PATCH 2/2] Create 357. Count Numbers with Unique Digits.py --- .../357. Count Numbers with Unique Digits.py" | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 "leetcode3/\354\265\234\354\233\220\354\244\200/357. Count Numbers with Unique Digits.py" diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/357. Count Numbers with Unique Digits.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/357. Count Numbers with Unique Digits.py" new file mode 100644 index 00000000..c40904da --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/357. Count Numbers with Unique Digits.py" @@ -0,0 +1,42 @@ +# + +''' +1. 아이디어 : +백트래킹으로 모든 경우를 구한다. +현재 숫자에 방문하지 않은 숫자를 더한다. + +2. 시간복잡도 : + 약 O(10 ** 8) + +3. 자료구조/알고리즘 : +backtracking + +''' +class Solution: + def countNumbersWithUniqueDigits(self, n: int) -> int: + visited = set() + + def backtrack(length, total_length): + if length == total_length: + return 1 + + total = 0 + + for i in range(10): + if length == 0 and i ==0: + continue # 0 + + if i in visited: + continue + + visited.add(i) + total += backtrack(length+1, total_length) + visited.remove(i) + + return total + + ans = 0 + for length in range(n+1): + ans += backtrack(0, length) + return ans +