티스토리 뷰

알고리즘

백준 1359

kOsari 2023. 7. 1. 18:07

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

 

1359번: 복권

첫째 줄에 세 정수 N, M, K가 주어진다.

www.acmicpc.net

 

문제이해

해당 문제는 콤비네이션을 구해 확률을 구하면 되는 문제이다.

단 해당 문제의 경우 K개 이상 맞으면 당첨이기 때문에 K개 이상 맞은 모든 경우의 수를 더해 확률을 계산해 주어야 한다.

 

풀이

문제해결은 다음과 같다.

import java.util.Scanner;

public class test39{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int k = sc.nextInt();

        double res = 0.0;
        double p = Combination(n, m);

        //m개중 K개  m개중 K+1개  .... m개중 m개를 포함하는 경우의 수를 모두 더해서 풀이
        while(m >= k){
            if(n - m < m - k){
                k++;
                continue;
            }
            //M에서K를 포함하는 경우의 수를 구하기
            double c = Combination(m, k) * Combination(n-m, m-k);

            res += c/p;
            k++;
        }

        System.out.println(res);
    }

    static long Combination(int n, int r){
        int p = 1;
        int c = 1;

        while(r > 0){
            c *= n--;
            p *= r--;
        }
        return c / p;
    }
}

'알고리즘' 카테고리의 다른 글

백준 1083  (0) 2023.07.04
백준 1522  (0) 2023.07.03
백준 2553  (0) 2023.07.01
백준 2346번  (0) 2023.06.26
백준 1080  (0) 2023.06.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함