[백준] 11050번 : 이항 계수 1 (브론즈 Ⅰ) - Java/자바

2025. 6. 30.·Problem Solving (Java)/백준
반응형


✅ 문제

문제링크

🔗 https://www.acmicpc.net/problem/11050

 


✅ 풀이

🔹 코드 1 (재귀함수)

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 result = factorial(n) / (factorial(n - k) * factorial(k));
        System.out.println(result);
    }

    public static int factorial(int n) {
        if (n <= 1) {
            return 1;
        }
        return n * factorial(n - 1);
    }
}

 

이항 계수란 수학에서 조합(Combination)을 나타내는 개념으로, 주어진 집합에서 원하는 개수만큼 순서없이 뽑는 조합의 개수를 말한다.

다음과 같이 수식을 표기하고 계산한다.

 

$\left(\begin{array}{c}n\\ k\end{array}\right)\;=\;_{n\;}\textrm{C}_{\;k}\;=\;\cfrac{n!}{(n\;-\;k)!\;k!}\;(단,\;0\;\leq\;k\;\leq\;n)$

 

StringTokenizer st를 선언하고 n과 k를 입력받는다.

int result를 선언해서 결과값을 받아주도록 한다.

factorial()메서드를 사용해 위 계산식과 같이 factorial(n) / (factorial(n - k) * factorial(k)) 계산 결과를 result에 저장한다.

result를 출력해주도록 한다.

 

factorial (int n) 메서드

팩토리얼 계산을 구현하는 메서드로 int를 반환한다.

if문을 통해 n이 1보다 같거나 작으면 return 1;하여 1을 반환한다.

아니라면 return n * factorial(n - 1);하여 재귀 호출을 한다.

 

🔹 결과 1

 

🔹 코드 2 (반복문)

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 result = factorial(n) / (factorial(n - k) * factorial(k));
        System.out.println(result);
    }

    public static int factorial(int n) {
        int result = 1;
        while (n != 0) {
            result *= n;
            n--;
        }
        return result;
    }
}

 

반복문을 사용해 이항 계수 계산을 구현해보자.

StringTokenizer st를 선언하고 n과 k를 입력받는다.

result에 이항계수 계산을 저장한다.

result를 출력해주도록 한다.

 

factorial (int n) 메서드

팩토리얼 계산을 구현하는 메서드로 int를 반환한다.

int result = 1;하여 반환할 계산 결과값을 저장할 변수를 선언한다.

while문을 사용해 n != 0 조건이 참일 때까지 반복한다.

result *= n;하여 result에 n을 곱한 결과를 result에 저장한다.

n--;하여 n을 줄여간다.

반복이 종료되면 result를 반환한다.

 

🔹 결과 2

 

🔹 알게된 정보

    • 이항 계수에 대해 알아보고 계산방법을 팩토리얼 계산으로 구현해보았다.

 


반응형
저작자표시 비영리 동일조건 (새창열림)

'Problem Solving (Java) > 백준' 카테고리의 다른 글

[백준] 20920번 : 영단어 암기는 괴로워 (실버 Ⅲ) - Java/자바  (0) 2025.07.03
[백준] 2108번 : 통계학 (실버 Ⅱ) - Java/자바  (0) 2025.07.03
[백준] 10872번 : 팩토리얼 (브론즈 Ⅲ) - Java/자바  (0) 2025.06.30
[백준] 24511번 : queuestack (실버 Ⅲ) - Java/자바  (0) 2025.06.29
[백준] 2346번 : 풍선 터뜨리기 (실버 Ⅲ) - Java/자바  (0) 2025.06.29
'Problem Solving (Java)/백준' 카테고리의 다른 글
  • [백준] 20920번 : 영단어 암기는 괴로워 (실버 Ⅲ) - Java/자바
  • [백준] 2108번 : 통계학 (실버 Ⅱ) - Java/자바
  • [백준] 10872번 : 팩토리얼 (브론즈 Ⅲ) - Java/자바
  • [백준] 24511번 : queuestack (실버 Ⅲ) - Java/자바
sunghyun.dev
sunghyun.dev
개발 공부를 기록하는 블로그입니다.
  • sunghyun.dev
    개발 공부 기록 블로그
    sunghyun.dev
  • 전체
    오늘
    어제
    • 전체 글 (61)
      • Problem Solving (Java) (51)
        • 백준 (51)
        • 프로그래머스 (0)
      • Computer Science (2)
        • 자료구조 (0)
        • 알고리즘 (2)
        • 컴퓨터 구조 (0)
        • 운영체제 (0)
        • 컴퓨터 네트워크 (0)
      • Language (7)
        • Java (7)
        • Kotlin (0)
        • Python (0)
      • Framework (0)
        • Spring (0)
        • Node.js (0)
        • Vue.js (0)
        • React (0)
      • DBMS (0)
        • 데이터베이스 (0)
        • MySQL (0)
        • Oracle (0)
        • MariaDB (0)
      • Git (0)
      • Web (0)
      • Cloud (0)
      • 자격증 (0)
        • SQLD (0)
        • 정보처리기사 (0)
        • 오픽 (0)
        • AICE (0)
      • Toy Project (0)
      • IDE (0)
        • IntelliJ IDEA (0)
      • 기타 (0)
      • Tistory (1)
  • 링크

    • Github
    • Notion
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 인기 글

  • 태그

    Deque
    배열
    알고리즘
    LCM
    유클리드호제법
    백준
    HashMap
    Java
    코딩테스트
    문자열
    Comparator
    브루트포스
    조합
    gcd
    스택
    카운팅정렬
    재귀함수
    덱
    이진탐색
    최대공약수
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
sunghyun.dev
[백준] 11050번 : 이항 계수 1 (브론즈 Ⅰ) - Java/자바
상단으로

티스토리툴바