๋ฌธ์ - Baekjoon 1010 : ๋ค๋ฆฌ ๋๊ธฐ
https://www.acmicpc.net/problem/1010
1010๋ฒ: ๋ค๋ฆฌ ๋๊ธฐ
์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ ์คํธ์ผ์ด์ค์ ๋ํด ๊ฐ์ ์์ชฝ๊ณผ ๋์ชฝ์ ์๋ ์ฌ์ดํธ์ ๊ฐ์ ์ ์ N, M (0 < N ≤ M < 30)์ด ์ฃผ์ด์ง๋ค.
www.acmicpc.net
ํต์ฌ
์์ชฝ ์ฌ์ดํธ N๊ฐ์ ๋์ชฝ ์ฌ์ดํธ M๊ฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ค๋ฆฌ๋ฅผ ์ง์ ์ ์๋ ๊ฒฝ์ฐ์ ์ ๊ณ์ฐ.
๋ด์ฉ
์ด ๋ฌธ์ ๋ ๋์ชฝ๊ณผ ์์ชฝ์ ์๋ ์ฌ์ดํธ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ค๋ฆฌ๋ฅผ ์ง์ ๋, ๊ฒน์น์ง ์๊ฒ ๋ค๋ฆฌ๋ฅผ ์ง์ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ์กฐํฉ ๋ฌธ์ ์ ๋๋ค. ๋ค๋ฆฌ๋ ๊ฐ ์ฌ์ดํธ์ ์ต๋ ํ ๊ฐ๋ง ์ฐ๊ฒฐ๋๋ฉฐ, ์์ชฝ์ N๊ฐ ์ฌ์ดํธ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ฌ ๋์ชฝ์ M๊ฐ ์ฌ์ดํธ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
์ ๊ทผ ๋ฐฉ๋ฒ
์ด ๋ฌธ์ ๋ ๋ค๋ฆฌ๋ฅผ ์ง๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ๊ฒ๊ณผ ๊ฐ์ผ๋ฉฐ, ๊ฐ๋จํ ๋งํด ์กฐํฉ(combinations) ๋ฌธ์ ์ ๋๋ค. ์์ชฝ์ N๊ฐ ์ฌ์ดํธ์ ๋์ชฝ์ M๊ฐ ์ฌ์ดํธ๊ฐ ์๋ค๊ณ ํ ๋, ๋์ชฝ์ M๊ฐ ์ฌ์ดํธ ์ค์์ N๊ฐ๋ฅผ ๊ณ ๋ฅด๋ ๊ฒฝ์ฐ์ ์์ ๊ฐ์ต๋๋ค.
ํฉํ ๋ฆฌ์ผ์ ๊ณ์ฐํ๋ ํจ์์ ์กฐํฉ์ ๊ตฌํ๋ ๊ณต์์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ํฉํ ๋ฆฌ์ผ ํจ์๋ ์ฃผ์ด์ง ์์์๋ถํฐ 1๊น์ง ๋ชจ๋ ์๋ฅผ ๊ณฑํ๋ ํจ์์ ๋๋ค. ์๋ฅผ ๋ค์ด, 5!=5×4×3×2×15!=5×4×3×2×1. ์กฐํฉ ํจ์๋ ์ด ํฉํ ๋ฆฌ์ผ ํจ์๋ฅผ ์ด์ฉํด, ์ฃผ์ด์ง M๊ฐ ์ค N๊ฐ๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
์ฝ๋
1. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฏธ์ฌ์ฉ
def factorial(n):
if n == 0:
return 1
return n * factorial(n-1)
def combination(m, n):
return factorial(m) // (factorial(n) * factorial(m-n))
T = int(input()) # ํ
์คํธ ์ผ์ด์ค ๊ฐ์
for _ in range(T):
N, M = map(int, input().split())
print(combination(M, N))
2. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
from math import comb
T = int(input()) # ํ
์คํธ ์ผ์ด์ค์ ์
for _ in range(T):
N, M = map(int, input().split())
print(comb(M, N))
ํ์ด
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฏธ์ฌ์ฉ ํ์ด
ํฉํ ๋ฆฌ์ผ ํจ์ factorial์ ์ฌ๊ท๋ฅผ ์ด์ฉํด ๊ตฌํํฉ๋๋ค.
์์ชฝ ์ฌ์ดํธ N๊ฐ์ ๋์ชฝ ์ฌ์ดํธ M๊ฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ์ ์๋ C(M,N)์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
์ฌ๊ท ํธ์ถ์ ํตํด ํฉํ ๋ฆฌ์ผ์ ๊ณ์ฐํ๊ณ , ์ด๋ฅผ ํตํด ์กฐํฉ์ ๊ฐ์ ๊ตฌํ์ฌ ์ถ๋ ฅํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ํ์ด
`comb(M, N)` ํจ์๋ M๊ฐ ์ค์์ N๊ฐ๋ฅผ ์ ํํ๋ ์กฐํฉ์ ์๋ฅผ ๋ฐํํฉ๋๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ์ฃผ์ด์ง N๊ณผ M์ ๋ํ ์กฐํฉ์ ์๋ฅผ ๊ณ์ฐํ์ฌ ์ถ๋ ฅํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
- ํ์ด์ฌ ์กฐํฉ ๊ณ์ฐ ๋ฐฉ๋ฒ: [Python math.comb](https://docs.python.org/3/library/math.html#math.comb))
- ์กฐํฉ๊ณผ ์์ด์ ๊ธฐ๋ณธ ๊ฐ๋
: [Combinations and Permutations](https://en.wikipedia.org/wiki/Combination))
'์ฝ๋ฉํ ์คํธ(Baekjoon)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] Baekjoon 1009 : ๋ถ์ฐ์ฒ๋ฆฌ (0) | 2024.03.08 |
---|---|
[python] Baekjoon 1007 : ๋ฒกํฐ ๋งค์นญ (0) | 2024.01.22 |
[python] Baekjoon 1006 : ์ต๊ฒฉ์ ์ด๋ผ๊ธฐ (1) | 2024.01.21 |
[python] Baekjoon 1005 : ACM Craft (0) | 2024.01.21 |
[python] Baekjoon 1004 : ์ด๋ฆฐ ์์ (0) | 2024.01.20 |
๋๊ธ