*n! (Factorial, ํฉํ ๋ฆฌ์ผ)
1๋ถํฐ ์์ฐ์ n๊น์ง์ ๋ชจ๋ ์๋ฅผ ์ฐจ๋ก๋๋ก ๊ณฑํ๋๊ฒ. (์ฃผ์ 0! = 1)
math๋ชจ๋
ํ์ด์ฌ์์ ํฉํ ๋ฆฌ์ผ์ ๊ตฌํ ๋๋ math๋ชจ๋์ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.
import math
math.factorial(5)
*nPr (permutation, ์์ด)
์ด๋ฆ๋๋ก ๋ฝ์์, ์ค์ ์ธ์ฐ๋ ์ํฉ์์ ์์ด์ ์ฌ์ฉํฉ๋๋ค. (์ค์ ์ธ์ด๋ค๋๊ฒ์ ์์O ๋ผ๋ ๋ป)
์ฆ, ์์๊ฐ ์์๋. ๊ทธ๋ฆฌ๊ณ ์ค๋ณต์ด ์์๋ ์ฌ์ฉํฉ๋๋ค.
n : ์ ์ฒด ๊ฐ์ r : ๋ฝ์ ๊ฐ์
itertools ๋ชจ๋ - permutations ํจ์
ํ์ด์ฌ์๋ ์์ด์ ๊ตฌํ ์ ์๋ ๋ด์ฅํจ์๊ฐ ์์ต๋๋ค.
import itertools
alphabet = ["a","b","c"]
w = itertools.permutations(alphabet)
print(list(w))
์ถ๋ ฅ : [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
* ์ค๋ณต์์ด Permutation with Repetition
์์๋๋ก ๋ฝ์ผ๋ฉฐ, ์ค๋ณต์ ํ์ฉํ ๋. (์์ด๊ณผ ๊ฐ์ง๋ง ์ค๋ณต์ ํ์ฉ)
itertools๋ชจ๋ - productํจ์
import itertools
alphabet = ["a","b","c"]
w = itertools.product(alphabet, repeat=2)
print(list(w))
์ถ๋ ฅ : [('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('c', 'a'), ('c', 'b'), ('c', 'c')]
repeat๋ฅผ ํตํด์, ๋ช๊ฐ๋ฅผ ๋ฝ์์ง ์ค์ ํฉ๋๋ค.
*nCr (combination, ์กฐํฉ)
์์๊ฐ ์๋ ์์ด์
๋๋ค . ์ฆ, ๊ทธ๋ฅ ์ ์ฒด์์ ํน์ ๊ฐ์๋ฅผ ๋ฝ๊ธฐ๋ง ํฉ๋๋ค.
n : ์ ์ฒด๊ฐ์
r : ๋ฝ์ ๊ฐ์
itertools ๋ชจ๋ - combination ํจ์
๋ง์ฐฌ๊ฐ์ง๋ก itertools ๋ชจ๋์ combinationํจ์๋ฅผ ์ด์ฉํฉ๋๋ค.
a,b,c ์ธ๊ฐ์ค 2๊ฐ๋ฅผ ๋ฝ๋๊ฒฝ์ฐ๋ ๋ค์ ์ฝ๋์ ๊ฐ์ต๋๋ค.
from itertools import combinations
alphabet = ["a","b","c"]
a = list(combinations(alphabet,2))
print(a)
์ถ๋ ฅ : [('a', 'b'), ('a', 'c'), ('b', 'c')]
*์ค๋ณต ์กฐํฉ combination with repetition
itertools - combinations_with_replacement ํจ์
from itertools import combinations_with_replacement
alphabet = ["a","b","c"]
a = list(combinations_with_replacement(alphabet,2))
print(a)
์ถ๋ ฅ : [('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'b'), ('b', 'c'), ('c', 'c')]
* map ํจ์๋ฅผ ์ฌ์ฉํ์ฌ, ๋ณด๊ธฐ ํธํ๊ฒ ์ถ๋ ฅํ๊ธฐ
๋ฆฌ์คํธ ์์ ํํํํ๋ก ์ถ๋ ฅ์ด ๋๋๋ฐ, ์ข ๋ ํธ์์ฑ์ ์ํด mapํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์์ฒ๋ผ ์ถ๋ ฅ ํ ์ ์์ต๋๋ค.
mapํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ ฅ
import itertools
alphabet = ["a","b","c"]
w = itertools.permutations(alphabet)
print(list(map("".join, w)))
์ถ๋ ฅ : ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']