⚙️알고리즘/Java

백준) 11050 : 이항계수

i_zzy 2024. 1. 9. 23:15

⏰문제

 

 

💡풀이

고등학생 때 배운 조합공식을 이용해서 풀었다. 

사용한 공식은 아래와 같다. 

 

$\binom{n}{k} = \left\{\begin{matrix}
0 &  k< 0\\
 \frac{n!}{k!(n-k)!} & 0 \leq k\leq n \\
0 & k > n \\
\end{matrix}\right.$

 

 

⌨️ 코드

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        int sum =1;
        for(int i=N; i>= N-K+1; i--){
            sum*=i;
        }

        for(int i=K;i>1; i--){
            sum/=i;
        }

        System.out.println(sum);
    }
}

 

 

📣 comment

soved.ac class2를 완료하기 위해서 풀은 문제이다. 문제 자체가 단순하고 for문을 사용해서 쉽게 풀긴 했지만, 다른 풀이가 있을 것이라 생각했다. 그래서 찾아본 결과 역시 dfs, dp 등의 다양한 알고리즘으로 이 문제를 풀 수 있었다. 

dfs가 약하다 보니 dfs보다는 for문을 먼저 풀었는데, dfs관련 문제를 많이 풀어서 익숙해져야 할 것 같다ㅠ

 

 

📑 참고

https://st-lab.tistory.com/159

 

[백준] 11050번 : 이항 계수 1 - JAVA [자바]

www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 알고리즘 [접근 방법] 이항 계수(Binomial coefficient) 문제 자체는 매

st-lab.tistory.com