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
42 changes: 42 additions & 0 deletions leetcode3/최원준/357. Count Numbers with Unique Digits.py
Original file line number Diff line number Diff line change
@@ -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

24 changes: 24 additions & 0 deletions leetcode3/최원준/70. Climbing Stairs.py
Original file line number Diff line number Diff line change
@@ -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]