Deep Dive Series/Algorithm

[Javascript] Combination(조합), 이항계수 가져오기

2022. 1. 9. 02:49
728x90
반응형
/**
 * Q. 자연수 n을 이진법으로 변환했을 때 나오는 1의 개수를 k라고 했을 때,
 * n보다 작은 자연수 중에서 이진법으로 변환하여
 * 1의 개수가 k인 수가 몇 개 있는지를 return 하도록 solution 함수를 완성해 주세요.
 */

이 코딩 문제를 효율적으로 풀기 위해 직감적으로 Combination(조합)이 필요하다고 느꼈다. (확률과 통계에서 배운 개념들이 스르륵 스쳐갔다.)

정확히는 이항계수를 구해야하는데 이항계수란 다음과 같다.

https://ko.wikipedia.org/wiki/%EC%A1%B0%ED%95%A9

위의 이항계수를 코드로 구현해보자. 크게 어려울 것은 없다.

//10 C 2 => getCombinationsCount(10, 2)
function getCombinationsCount(총원소수, 선택원소수) {
  const 곱셈 = (a, b) => a * b;
  let 분자 = [], 분모 = [];
  for (let i = 0; i < 선택원소수; i++) {
    분자.push(총원소수 - i);
    분모.push(선택원소수 - i);
  }
  return 분자.reduce(곱셈) / 분모.reduce(곱셈);
}

위 문제는 이항계수를 코드로 만드는 것 자체가 어렵다기보단 조합할 케이스들을 정의하는것 자체가 어렵다. 프로그래머스 4레벨에 해당되는 문제라고 하는데 결국 풀어내고 효율성테스트까지 통과하긴 했으나 참으로 어려운 문제였다. 방법은 참신했다고 보는데 오랜만에 다시보니 이해하기 참으로 어려웠다. 오랜만에 옛날 수학공부했던 것도 생각나면서 몰입했던 시간이었다.

ps1. 풀이가 궁금하다면 비밀댓글~

ps2. 갑자기 땡기는 콤비네이션 pizzzza

반응형
저작자표시 비영리
날개단
날개단
이왕 하는거 우왕 나오게
날개단
날개단 기술 블로그
날개단
전체
오늘
어제
  • 분류 전체보기 (66)
    • Small Talk (2)
    • Retrospective (13)
    • Document (4)
    • Googling (1)
      • cs (7)
      • postgresql (8)
      • Vue + Nuxt (3)
      • javascript (3)
      • typescript (1)
      • Node.js (1)
      • Git (1)
      • JSP (1)
      • html + css (1)
      • Android (1)
      • tools (4)
    • Achieving (1)
      • ToyProject (1)
      • Study (0)
    • Deep Dive Series (12)
      • Paging (4)
      • Good Condition (5)
      • Image Resizing (2)
      • Algorithm (1)
    • Review (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • PostgreSQL
  • 상반기회고
  • 포스트그레
  • 개발자변신
  • 좋은조건문
  • 스타트업개발자
  • 코드리팩토링
  • 개발자
  • 토이프로젝트
  • if문
  • 개발자회고
  • nuxt
  • 페이징
  • 회고
  • 조건문
  • 좋은분기
  • 사이드프로젝트
  • 신입개발자
  • 스타트업회고
  • EARLYRETURN

최근 댓글

최근 글

hELLO · Designed By 정상우.
날개단
[Javascript] Combination(조합), 이항계수 가져오기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.