본문 바로가기

알고리즘 Algorithm/BOJ 백준 (초급~중급)

[BOJ 백준] 이항 계수 1(11050) C++, Java

 

링크 :

 

문제 설명 : 

더보기

자연수 N과 정수 K가 주어졌을 때 이항 계수 를 구하는 프로그램을 작성하시오.

 

입력 : 

더보기

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

출력 : 

더보기

N C K를 출력한다

 

예제 입력 : 

예제 출력 : 

 

 

접근법 : 

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
반응형