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)));
}
}
댓글남기기