[BOJ/๋ฐฑ์ค€] 1010 ๋‹ค๋ฆฌ ๋†“๊ธฐ (JAVA)

2025. 2. 13. 11:29ยท๐Ÿ’ช Algorithm
๋ฐ˜์‘ํ˜•

๋งํฌ

https://www.acmicpc.net/problem/1010

 

๋ฌธ์ œ ์š”์•ฝ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๋‹ค๋ฆฌ๋ฅผ ์ง€์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ถœ๋ ฅํ•˜๊ธฐ

 

๊ฐ•์˜ ์„œ์ชฝ์—๋Š” N๊ฐœ, ๋™์ชฝ์—๋Š” M๊ฐœ์˜ ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋‹ค.

๋‹ค๋ฆฌ๋ผ๋ฆฌ ์„œ๋กœ ๊ฒน์น  ์ˆ˜ ์—†๋‹ค.

์„œ์ชฝ์˜ ์‚ฌ์ดํŠธ ๊ฐœ์ˆ˜๋งŒํผ (N๊ฐœ) ๋‹ค๋ฆฌ๋ฅผ ์ง€์œผ๋ ค๊ณ  ํ•œ๋‹ค.

 

์ œํ•œ

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

 

ํ’€์ด

๋ณด์‹œ๋ฉด ์‹œ๊ฐ„์ œํ•œ์ด 0.5์ดˆ๋กœ ๋งค์šฐ ์งง์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

 

N๊ฐœ์˜ ์‚ฌ์ดํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฆฌ๋ฅผ ์ง“๊ธฐ ๋•Œ๋ฌธ์— N ๊ฐ’์ด ๋™์ผํ•  ๋•Œ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

`[N=2์ผ ๋•Œ]`

M=2: 1

M=3: 3

M=4: 6

M=5: 10

M=6: 15

…

 

๋‹ต ๊ฒฐ๊ณผ๊ฐ€ ์ต์ˆ™ํ•˜์ง€ ์•Š์œผ์‹ ๊ฐ€์š”?

๋ฐ”๋กœ M๊ฐœ์ค‘ N๊ฐœ๋ฅผ ๊ณ ๋ฅด๋Š” ์กฐํ•ฉ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

`M=3`, `N=2`๋ผ๊ณ  ํ•ฉ์‹œ๋‹ค.

์„œ์ชฝ 1, 2๋ฒˆ์„ ๋™์ชฝ 1, 2๋ฒˆ๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ 1-1, 2-2๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ, ๋™์ชฝ์—์„œ N๊ฐœ๋ฅผ ์„ ํƒํ–ˆ์„ ๋•Œ ์„œ์ชฝ N๊ฐœ์˜ ์‚ฌ์ดํŠธ์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” “ํ•˜๋‚˜”์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋™์ชฝ M๊ฐœ ์ค‘ N๊ฐœ๋ฅผ ๊ณ ๋ฅด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋‹ค๋ฆฌ๋ฅผ ์ง€์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

 

์ด๋Š” ๋‹ค๋ฆฌ๊ฐ€ ๊ฒน์น˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ์กฐ๊ฑด ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ด ์กฐ๊ฑด์ด ์—†๋‹ค๋ฉด 1-1,2-2 / 1-2, 2-1 ์ˆœ์—ด ๋ฌธ์ œ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

 

์กฐํ•ฉ ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ์ฒ˜์Œ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด factorial ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ•ด ์กฐํ•ฉ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์กฐํ•ฉ ๊ณต์‹

ํ•˜์ง€๋งŒ M ๊ฐ’์ด ์ตœ๋Œ€ 29์ด๊ณ , 29 ํŒฉํ† ๋ฆฌ์–ผ์€ long์˜ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค!

 

๋”ฐ๋ผ์„œ ์•„๋ž˜ ์กฐํ•ฉ ์„ฑ์งˆ์„ ์ด์šฉํ•ด dp๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฝ”๋“œ

import java.util.*;
import java.io.*;

public class Main {

    static int T, N, M;
    static int[][] dp;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        T = Integer.parseInt(br.readLine());
        dp = new int[30][30];

        for(int i=0; i<T; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());

            N = Integer.parseInt(st.nextToken());
            M = Integer.parseInt(st.nextToken());

            sb.append(sol(M,N)).append("\\n"); // M๊ฐœ์ค‘ N๊ฐœ์˜ ์กฐํ•ฉ์„ ๊ณ ๋ฅด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜
        }
        System.out.print(sb);
    }

    static int sol(int n, int r){
        if(dp[n][r] > 0) // ์ด๋ฏธ ๊ณ„์‚ฐํ•œ ๊ฒฝ์šฐ
            return dp[n][r]; 
        if(n == r || r < 1){ // N๊ฐœ ์ค‘ N๊ฐœ๋ฅผ ๊ณ ๋ฅด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 1 + 0๊ฐœ๋ฅผ ๊ณ ๋ฅด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ํ•ญ์ƒ 1
            return dp[n][r] = 1;
        }

        return dp[n][r] = sol(n-1, r-1) + sol(n-1, r);
    }
}

๐Ÿท ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ๊ฐ (n, r) ์กฐํ•ฉ์„ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๊ณ„์‚ฐํ•˜๊ณ , ๊ฐ€๋Šฅํ•œ (n, r) ์กฐํ•ฉ์€ ์ตœ๋Œ€ N*M๊ฐœ๋‹ค.
  • ์ตœ์ข… ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N*M)

๐Ÿท ์‹คํ–‰ ์†๋„

Time: 104 ms, Memory: 14348 KB

๋ฐ˜์‘ํ˜•

'๐Ÿ’ช Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ/๋ฐฑ์ค€] 2597 ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ(JAVA)  (2) 2025.02.14
[BOJ/๋ฐฑ์ค€] 13023 ABCDE(JAVA)  (1) 2025.02.12
[BOJ/๋ฐฑ์ค€] 2178 ๋ฏธ๋กœ ํƒ์ƒ‰(JAVA)  (1) 2025.02.11
[BOJ/๋ฐฑ์ค€] 1931 ํšŒ์˜์‹ค ๋ฐฐ์ •(JAVA)  (1) 2025.02.10
'๐Ÿ’ช Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BOJ/๋ฐฑ์ค€] 2597 ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ(JAVA)
  • [BOJ/๋ฐฑ์ค€] 13023 ABCDE(JAVA)
  • [BOJ/๋ฐฑ์ค€] 2178 ๋ฏธ๋กœ ํƒ์ƒ‰(JAVA)
  • [BOJ/๋ฐฑ์ค€] 1931 ํšŒ์˜์‹ค ๋ฐฐ์ •(JAVA)
dev-heyjin
dev-heyjin
  • dev-heyjin
    ๊ฐœ๋ฐœ ๊ธฐ๋ก
    dev-heyjin
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (56)
      • ๐ŸŽฏ Programming (8)
      • ๐Ÿ’ช Algorithm (16)
      • โš™๏ธ CS (31)
        • ๋„คํŠธ์›Œํฌ (15)
        • ์šด์˜์ฒด์ œ (15)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    DB
    RDS
    ํ•ดํ‚น
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
dev-heyjin
[BOJ/๋ฐฑ์ค€] 1010 ๋‹ค๋ฆฌ ๋†“๊ธฐ (JAVA)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”