1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [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๊ฐ€ ์•ˆ ๋ฐœ์ƒํ•˜๊ณ  ์ž˜ ๋˜์—ˆ๋‹ค.
์ ํ™”์‹๋„ ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ• ๊ฐ™๋‹ค !!

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: