BOJ_S5_1010
๐ [S5_1010] ๋ค๋ฆฌ ๋๊ธฐ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static StringTokenizer st;
static int L, R;
// ๋์ ๊ณํ๋ฒ
static int[][] dp = new int[30][30];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// ํ
์คํธ ์ผ์ด์ค ์
๋ ฅ
int TC = Integer.parseInt(br.readLine());
for (int t = 0; t < TC; t++) {
st = new StringTokenizer(br.readLine(), " ");
// ์ผ์ชฝ ์ฌ์ดํธ ์
L = Integer.parseInt(st.nextToken());
// ์ค๋ฅธ์ชฝ ์ฌ์ดํธ ์
R = Integer.parseInt(st.nextToken());
//์ถ๋ ฅ
sb.append(combination(R, L)).append("\n");
}
System.out.println(sb);
}
// nCr ๊ณ์ฐ
static int combination(int n, int r) {
// ์ด๋ฏธ ํ์๋ ๊ฒ์ผ ๊ฒฝ์ฐ ์ฌํ์ฉ
if(dp[n][r]>0) {
return dp[n][r];
}
// ๊ธฐ์ ์กฐ๊ฑด
if(r == 0 || n == r) {
return dp[n][r] = 1;
}
// ์ฌ๊ท ๋๋ฆฌ๋ฉด์ ๊ฐ ๋ฉ๋ชจ์ด์ ์ด์
,
// R , L ์์ ์์ํ๊ธฐ ๋๋ฌธ์ - ์ฌ์ฉ
return dp[n][r] = combination(n-1, r-1) + combination(n-1, r);
}
}
๐ค ๋์ ์๊ฐ
๊ต์ฅํ ํ์ด๊ฐ ๋ณด์ด๋ ๋ฌธ์ ์์ง๋ง ์ ์ผ ๊ณ ์ํ ๋ฌธ์ ..
์ ๋ง.. ์ฒ์์๋ ๋น์ฐํ ์กฐํฉ์ธ ์ค ์๊ณ ์กฐํฉ์ ์ฌ๊ท๋ก ํ๋๋ฐ ์คํจํ๊ณ ..
nCr ์กฐํฉ ์ฐ์ฐ์์ผ๋ก ํ๋๋ฐ๋ StackOverFlow๊ฐ ๋ฐ์ํ๊ณ ..
๊ฒฐ๊ตญ ๋ฐ๊ฒฌํ ๊ฒ์ dp.. ์ฌ๊ท๋ฅผ ๋๋ฆฌ๋ฉด์ ๋ฉ๋ชจ์ ์ด์
ํ๋ ๊ฒ์ด ํค ํฌ์ธํธ ์๋ ๊ฒ ๊ฐ๋ค.
์ด๋ค ๋ถ์ ์กฐํฉ ์ ํ์์ ์ฌ์ฉํ์ฌ ๊ณ์ฐํ์๋๋ฐ StackOverFlow๊ฐ ์ ๋ฐ์ํ๊ณ ์ ๋์๋ค.
์ ํ์๋ ๊ด์ฐฎ์ ๋ฐฉ๋ฒ ๊ฐ๋ค !!