알고리즘 Algorithm/BOJ 백준 (초급~중급)
[BOJ 백준] 이항 계수 1(11050) C++, Java
섭코딩
2023. 1. 13. 01:54
링크 :
문제 설명 :
더보기
자연수 N과 정수 K가 주어졌을 때 이항 계수 를 구하는 프로그램을 작성하시오.
입력 :
더보기
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 0 ≤ K ≤ )
출력 :
더보기
N C K를 출력한다
예제 입력 :
더보기
5 2
예제 출력 :
더보기
10
접근법 :
1) 어떻게 풀 것인가?
2) 시간복잡도
3) 공간복잡도
4) 풀면서 놓쳤던점
5) 이 문제를 통해 얻어갈 것
Java 코드 :
import java.io.*;
import java.util.*;
// 이항계수1 11050
public class Main {
static int N, K;
public static void main(String[] args) throws IOException {
// 1. 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
// 2. 팩토리얼 통한 nCk 구하기
sb.append( factorial(N) / (factorial(K) * factorial(N-K) )) ;
// 3. 출력
System.out.println(sb.toString());
br.close();
}
static int factorial(int N) {
if (N<=1) {
return 1;
}
return N * factorial(N-1);
}
}
C++ 코드 :
#if 1
#pragma warning(disable:4996)
#include <cstdio>
int N, K; // 이항계수 NCK
int factorial(int N);
int main() {
scanf("%d %d", &N, &K);
printf("%d", factorial(N) / (factorial(K) * factorial(N - K)));
return 0;
}
int factorial(int N) {
if (N == 0) {
return 1;
}
return N * factorial(N - 1);
}
#endif
반응형