728x90
문제 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[][] dp;
static int bino( int n, int r ) {
if( r == 0 || n == r ) return 1;
if( dp[n][r] != -1 )
return dp[n][r];
return dp[n][r] = bino( n-1, r-1 ) + bino( n-1, r );
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt( br.readLine() ), n, m, i, j;
while( t-- > 0 ) {
st = new StringTokenizer( br.readLine() );
n = Integer.parseInt( st.nextToken() );
m = Integer.parseInt( st.nextToken() );
dp = new int[m+1][n+1];
for( i = 0; i < m+1; i++ )
for( j = 0; j < n+1; j++)
dp[i][j] = -1;
sb.append( bino( m, n ) + "\n" );
}
br.close();
System.out.println( sb.toString() );
}
}
* 이항 계수
- n <= m 이므로, m개 중 n개를 뽑는 조합의 경우의 수를 구하는 것과 같다
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 백준 온라인 저지 ( BOJ )' 카테고리의 다른 글
[백준(Baekjoon)][자바(java)] 2629 : 양팔저울 / 동적 계획법 2 (0) | 2021.01.21 |
---|---|
[백준(Baekjoon)][자바(java)] 17298 : 오큰수 / 스택 (0) | 2021.01.21 |
[백준(Baekjoon)][자바(java)] 13305 : 주유소 / 그리디 알고리즘 (0) | 2021.01.21 |
[백준(Baekjoon)][자바(java)] 9184 : 신나는 함수 실행 / 동적 계획법 1 (0) | 2021.01.21 |
[백준(Baekjoon)][자바(java)] 10757 : 큰 수 A+B / 기본 수학 1 (0) | 2021.01.19 |