๊ธฐ๋ก๋ฐฉ

BOJ_1010 : ๋‹ค๋ฆฌ ๋†“๊ธฐ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1010 : ๋‹ค๋ฆฌ ๋†“๊ธฐ

Soom_1n 2023. 4. 6. 13:16

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

1010๋ฒˆ: ๋‹ค๋ฆฌ ๋†“๊ธฐ

์ž…๋ ฅ์˜ ์ฒซ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๊ฐ•์˜ ์„œ์ชฝ๊ณผ ๋™์ชฝ์— ์žˆ๋Š” ์‚ฌ์ดํŠธ์˜ ๊ฐœ์ˆ˜ ์ •์ˆ˜ N, M (0 < N ≤ M < 30)์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • N๊ฐœ์˜ ์„œ์ชฝ ์ง€์ ์—์„œ M๊ฐœ์˜ ์˜ค๋ฅธ์ชฝ ์ง€์ ์œผ๋กœ ๋‹ค๋ฆฌ๋ฅผ ์—ฐ๊ฒฐ ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
    • ๋‹ค๋ฆฌ๋Š” ์„œ๋กœ ๊ฒน์น  ์ˆ˜ ์—†๋‹ค.
    • ํ•œ ์ง€์ ์€ ํ•˜๋‚˜์˜ ๋‹ค๋ฆฌ๋งŒ ๋†“์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์กฐํ•ฉ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
    • N <= M ์—์„œ ๋‹ค๋ฆฌ๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ๋†“์œผ๋ ค๋ฉด N๊ฐœ๋ฅผ ๋†“์•„์•ผ ํ•œ๋‹ค.
    • M๊ฐœ์—์„œ N๊ฐœ๋ฅผ ์„ ํƒํ•ด์•ผํ•˜๋ฉฐ ์ค‘๋ณต๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. (mCn)
    • ์กฐํ•ฉ์€ ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค๋ฆฌ๊ฐ€ ๊ฒน์น˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์กฐ๊ฑด์€ ์ƒ๊ด€์—†์–ด์ง„๋‹ค.
    • ์กฐํ•ฉ์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•ด ๋ฉ”๋ชจ์ด์ œ์ด์…˜์œผ๋กœ ๋™์ ๊ณ„ํš๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
      • n C 0 = n C n = 1 
      • n+1 C r+1 = n C r + n C r+1 ์ด๋ฏ€๋กœ,
        n C r = n-1 C r-1 + n-1 C r ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = null;

        int[][] dp = new int[30][30];
        for (int i = 0; i < 30; i++) {
            for (int j = 0; j <= i; j++) {
                if (j == 0 || i==j) dp[j][i] = 1;
                else {
                    dp[j][i] = dp[j-1][i-1] + dp[j][i-1];
                }
            }
        }

        int T = Integer.parseInt(br.readLine());
        for (int t = 0; t < T; t++) {
            st = new StringTokenizer(br.readLine());
            System.out.println(dp[Integer.parseInt(st.nextToken())][Integer.parseInt(st.nextToken())]);
        }
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์œ„ ์กฐํ•ฉ์˜ ์„ฑ์งˆ ๊ณต์‹์„ ๋ฐ”ํ…€ ์—… ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด dp๋ฐฐ์—ด์„ ์ฑ„์›Œ๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์กฐํ•ฉ์„ ์žฌ๊ท€๋กœ ์ ‘๊ทผํ•˜๋ฉด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š์ง€๋งŒ, ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์œ„ํ•ด dp๋ฐฐ์—ด์„ ๋ฐ”ํ…€ ์—… ๋ฐฉ์‹์œผ๋กœ ์ฑ„์šฐ๋Š” ๋ฐฉ๋ฒ•์€ ์กฐํ•ฉ ๊ณต์‹์„ ์•Œ ํ•„์š”๊ฐ€ ์žˆ์–ด์„œ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ–ˆ๋‹ค. (์ฐธ๊ณ  ํฌ์ŠคํŒ…)

728x90