728x90
https://www.acmicpc.net/problem/11050
math를 사용하지 않은 풀이)
n, k = map(int, input().split())
up, down = 1, 1
for i in range(n, n-k, -1):
up *= i
for i in range(1, k+1):
down *= i
print(up // down)
Combination을 구하는 문제인데 처음에 for문을 여러개 돌리다가 시간초과가 났었다. 풀이에선 n! / (n-k)!부분을 하나의 변수로(up) 처리하는것을 보고 왜 이렇게 생각하지 못했지를 후회했다.
math를 사용한 풀이)
import math
n, k = map(int, input().split())
print(math.factorial(n)// (math.factorial(n-k) * math.factorial(k)) )
파이썬 math에서 제공하는 factorial을 사용하면 간단하게 풀 수 있다. 두 가지 방법이 모두 가능하다는것을 숙지해야겠다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 11866 파이썬(python) : 요세푸스 문제 0 (0) | 2022.07.04 |
---|---|
[백준] 11650 파이썬(python) : 좌표 정렬하기 (0) | 2022.07.04 |
[백준] 10866 파이썬(python) : 덱 (0) | 2022.07.04 |
[백준] 10816 파이썬(python) : 숫자 카드 2 (0) | 2022.07.04 |
[백준] 10814 파이썬(python) : 나이순 정렬 - sort() (0) | 2022.07.04 |