BOJ 11050 이항계수 [Java]

문제

접근방법

  • 재귀 팩토리얼로 가장 기본적으로 잘 풀린다.
  • 유의 및 이 게시글을 쓴 이유) 반복으로도 풀려고 하였는데, 계속 채점 결과가 오답이 나왔다. 그 이유는 K가 0인 경우를 고려하지 않아서이다..... 조심하자!

구현

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

class Main {

    public static void main(String[] args) throws Exception {
        // for coding
        // System.setIn(new FileInputStream("./input/input_11050.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ", false);

        int top = Integer.parseInt(st.nextToken());
        int bottom = Integer.parseInt(st.nextToken());
        if (bottom != 0) {
            int cnt = bottom;
            int resTop = top;
            int resBottom = bottom;

            // 반복 이항계수
            for (int i = 1; i < cnt; i++) {
                resTop *= (--top);
                resBottom *= (--bottom);
            }
            bw.write(resTop / resBottom + "");
        }
        else {
            bw.write("1");
        }

        // 재귀 팩토리얼로
        //bw.write(factorial(top) / (factorial(bottom) * factorial(top - bottom)) + "");

        bw.close();
    }

    // 재귀 팩토리얼로
    // static int factorial(int N) {
    //     if (N == 0) {
    //         return 1;
    //     }

    //     return N * factorial(N - 1);
    // }
}

제출

좋은 웹페이지 즐겨찾기