티스토리 뷰

반응형

www.acmicpc.net/problem/11050

 

11050번: 이항 계수 1

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net

 


 문제

 입력

 출력

 예제 입출력

 알고리즘 분류

  • 수학
  • 구현
  • 조합론

 


 

 문제 접근 과정

 

이항 계수가 어떤 건지만 알면 풀 수 있는 문제다.

 

이항 계수를 풀라면 팩토리얼이 들어간다.

팩토리얼을 구현하기 위해 재귀 함수를 사용했다.

 

재귀 함수를 메서드로 구현한 뒤 팩토리얼로 이루어진 이항 계수를 위한 (0 <=k <=n)의 함수 메서드를 따로 만들어줬다.

 


 

재귀 함수

 

  • 재귀함수란?

       재귀 함수는 함수 안에서 자기 자신을 계속 호출하여 문제를 해결해가는 함수이다. 

       아래에 예시를 보면

팩토리얼 재귀 함수

       계속해서 자기 자신인 fact를 특정 조건을 성립할 때까지 호출한다.

       위 예시는 이번 문제에 사용되었다.

 


 

 문제 풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //N과 K의 값을 입력받는다.
        int N = in.nextInt();
        int K = in.nextInt();

        //binoimal 함수를 호출한다.
        System.out.print(binomial(N,K));

    }

    //이항 계수
    public static int binomial(int N,int K) {
        return fact(N)/(fact(K)*fact(N-K));
    }

    //팩토리얼(재귀함수)
    public static int fact(int n) {
        if (n <= 1)
            return 1;
        else
            return fact(n-1) * n;
    }
}

 

 

 


 결과

 

 


 마무리

 

 

재귀 함수를 메서드로 구현하여 문제에 접근하면 보다 쉽게 해결할 수 있다.

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함