문제
코드
My answer
import sys
input=sys.stdin.readline
n,m=map(int,input().split())
a,b=1,1
if(n-m>m):m=n-m
for i in range(m):
a*=n
n-=1
for i in range(m):
b*=m
m-=1
print(a//b)
import sys
input=sys.stdin.readline
n,m=map(int,input().split())
dp=[]
for i in range(n+1):
dp.append([0 for j in range(i+1)])
dp[1][0],dp[1][1]=1,1
for i in range(2,n+1):
for j in range(0,i+1):
if(j==0 or j==i):
dp[i][j]=1
continue
dp[i][j]=dp[i-1][j-1]+dp[i-1][j]
print(dp[n][m])
Another answer
import math
print(math.comb(*map(int,input().split())))
풀이
맨 처음에는 그냥 예전 수학배운것을 떠올려서 조합을 식으로 구현했고, 두번째 코드는 얼마전 풀었던 파스칼 삼각형 문제가 생각나서 dp로 한번 풀어봤다. 다행히 한번 풀어봤던지라 바로 규칙이 찾아져서 손쉽게 풀었다. 마지막 코드는 math모듈의 comb함수를 이용하였다.
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #5568- 카드 놓기 (0) | 2022.01.14 |
---|---|
[Python] 백준 #1912 - 연속합 [try_again] (0) | 2022.01.12 |
[Python] 백준 #1806- 부분합[try_again] (0) | 2022.01.11 |
[Python] 백준 #15489- 파스칼 삼각형 (0) | 2022.01.07 |
[Python] 백준 #20152- Game Addiction (0) | 2022.01.07 |