import itertools
팩토리얼 : factorial
def factorial(x):
n = 1
for i in range(1,x+1):
n = n*i
return n
factorial(6)
피보나치
def fibonacci(n):
if n == 0:
return 0
if n == (1 or 2):
return 1
DP = [1, 1]
for i in range(1, n - 1):
DP.append(DP[i] + DP[i - 1])
return DP[n - 1]
순열
list(itertools.permutations(["1","2","3","4"],2))
'''
경우의 수 : 12개
[('1', '2'),
('1', '3'),
('1', '4'),
('2', '1'),
('2', '3'),
('2', '4'),
('3', '1'),
('3', '2'),
('3', '4'),
('4', '1'),
('4', '2'),
('4', '3')]
'''
중복 순열
list(itertools.product((["1","2","3","4"]), repeat=2))
'''
경우의 수 : 16개
[('1', '1'),
('1', '2'),
('1', '3'),
('1', '4'),
('2', '1'),
('2', '2'),
('2', '3'),
('2', '4'),
('3', '1'),
('3', '2'),
('3', '3'),
('3', '4'),
('4', '1'),
('4', '2'),
('4', '3'),
('4', '4')]
'''
조합
list(itertools.combinations((["1","2","3","4"]),2))
'''
경우의 수 : 6개
[('1', '2'),
('1', '3'),
('1', '4'),
('2', '3'),
('2', '4'),
('3', '4')]
'''
중복 조합
list(itertools.combinations_with_replacement((["1","2","3","4"]),2))
'''
경우의 수 : 10개
[('1', '1'),
('1', '2'),
('1', '3'),
('1', '4'),
('2', '2'),
('2', '3'),
('2', '4'),
('3', '3'),
('3', '4'),
('4', '4')]
'''
리스트 병합
list1 = [1, 11, 111]
list2 = [2, 22, 222]
list3 = [3, 33, 333]
list(itertools.product(*[list1, list2, list3]))
'''
경우의수 : 27개
[(1, 2, 3),
(1, 2, 33),
(1, 2, 333),
(1, 22, 3),
(1, 22, 33),
(1, 22, 333),
(1, 222, 3),
(1, 222, 33),
(1, 222, 333),
(11, 2, 3),
(11, 2, 33),
(11, 2, 333),
(11, 22, 3),
(11, 22, 33),
(11, 22, 333),
(11, 222, 3),
(11, 222, 33),
(11, 222, 333),
(111, 2, 3),
(111, 2, 33),
(111, 2, 333),
(111, 22, 3),
(111, 22, 33),
(111, 22, 333),
(111, 222, 3),
(111, 222, 33),
(111, 222, 333)]
'''