[브루트포스/재귀함수] N개 알파벳 중에 R개를 나열하는 경우
# N개 알파벳 중에 R개를 나열하는 경우 def permutation (cur, n, r, result): if cur >= r : print(result) return else: for i in range(n): alpha = chr(ord('a') + i) if not check[cur]: result[cur] = alpha check[cur] = True permutation(cur+1,n,r,result) # check[cur] = False result[cur] = 0 if __name__ == '__main__': n,r = map(int,input().split()) check = [False]*r result = [0]*r permutation(0,n,r,result) r중 for문 수행..
2021. 4. 5.
[재귀호출] LeetCode 70. Climbing Stairs
1과 2의 합으로 n을 만드는 경우의 수를 구한다. 1. 재귀호출 (브루트포스. 모든 경우의 수를 다 구한다) 예를 들어 1과 2의 합으로 4를 만드는 경우의 수를 봐보자. 1+1+1+1, 1+1+1+2, 1+1+2, 1+2+1, 1+2+2, ... 이런식으로 모든 경우의 수를 다 해보는 것이다. class Solution: def __init__(self): self.cnt = 0 def do(self, result,n): if result == n: self.cnt += 1 return if result > n: return for i in [1,2]: self.do(result+i,n) def climbStairs(self, n: int) -> int: self.do(0,n) return self...
2021. 3. 20.