Baekjoon 문제 풀기 (11050번 : 이항 계수 1) Java

11050번 : 이항 계수 1

1. 문제읽기


이항계수 식만 알면 된다..

풀었던 건데 이항계수가 뭔지 기억안나서 이전 포스팅 참고했다 ㅋㅋ.
간단히 말하면 조합이랑 같은 거라고 한다.
$\frac{n!}{k!(n-k)!}$ 이 공식만 알면 된다.

2. 제출 코드


팩토리얼 구현 방법만 알면 된다.

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

public class BOJ11050 {
    public static int fact(int num) {
        if(num <= 1) {
            return 1;
        } else {
            return fact(num-1)*num;
        }
    }
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bf.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        System.out.println(fact(n)/(fact(k)*fact(n-k)));
    }
}

3. 공부할 것


재귀로 풀었는데, for문으로 푸는 방법도 있었다.
for문이 더 빠를 줄 알았는데 재귀가 더 빨랐다.
파이썬처럼 팩토리얼 메소드는 없는듯..?

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

public class BOJ11050 {
    public static int fact(int num) {
        int ans = 1;
        if(num <= 1) {
            return 1;
        } else {
            for(int i = num; i >= 1; i--) {
                ans *= i;
            }
            return ans;
        }
    }
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(bf.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());

        System.out.println(fact(n)/(fact(k)*fact(n-k)));
    }
}

댓글남기기