본문 바로가기

Study/Coding Test

[baekjoon] 이항계수1(JavaScript)

📘 오늘의 코딩테스트 - 이항계수1(JavaScript)

🔢 문제 번호: 11050번

🔗 문제 링크: 백준 - 이항계수1

 

 

 

 

🧠 문제 요약

  • 자연수 N과 정수 K가 주어졌을 때 이항계수 C(N,K)를 구하는 문제
  • 이항계수란 "n개 중에서 k개를 선택하는 경우의 수"를 의미
  • 공식: C(n,k) = n! / (k! * (n-k)!)
    • 입력: N, K (1 ≤ N ≤ 10, 0 ≤ K ≤ N)
    • 출력: C(N,K) 값

 

 

 

✅ 실행 예시 및 결과

입력:
5 2

출력:
10

 

 

 

✍️ 내 풀이

  • 팩토리얼 함수를 먼저 만든 후 이항계수 공식에 적용!!
  • while문을 사용해 n부터 1까지 차례대로 곱하는 방식으로 팩토리얼 함수 생성!!

 

 

 

💻 내가 푼 코드

const input = require('fs').readFileSync('/dev/stdin').toString().split(' ');

const [N, K] = input.map(Number);

const factorial  = (n) => {
    let result = 1;
    while(n > 1) {
        result = result * n;
        n = n - 1;
    }
    return result;
}

const C = (n, k) => {
    return factorial(n) / (factorial(k) * factorial(n-k))
}

console.log(C(N,K));

 

 

 

📎 남이 푼 코드

const factorial = (n) => n <= 1 ? 1 : n * factorial(n - 1);
  • 재귀 함수를 이용한 팩토리얼
  • 한 줄로 쓴 간단한 코드
  • n이 1 이하면 1을 돌려줌
  • 그렇지 않으면 n × factorial(n-1) 계산
  • 쉽게 말해 자기 자신을 다시 호출하는 함수

 

 

 

🔍 회고 & 배운 점

  • 이항계수라는 개념을 너무 오랜만에 들어서 놀랐......몰라서 ㅎㅎ...
  • 저 남이 푼 코드는.... 재귀함수를 많이 다뤄보지 못해서 잘 못 쓸 듯
  • (왜 저 코드는 이모티콘으로 보이지 ㅋㅋㅋ => n <=)
반응형