Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 리눅스 777
- 빗썸 API 사용
- 즐겨찾기가 가장 많은 식당 정보 출력하기
- 단순 반복 자동화
- 와스 웹서버의 차이
- Web Server란
- 프로그래머스
- 리눅스 rwx
- JSON특징
- 리눅스
- WAS란
- java
- JavaScript Obejct Notation
- spring
- 파이썬 가상환경
- 변동성 돌파전략
- WAS WebServer 차이
- JSON 형식
- pybithumb
- 파이썬
- BigDecimal
- Web Service Architecture
- 트레이딩 봇 만들기
- 오라클
- 프로그래머스 SQL
- string format
- Python
- 파이썬 주식
- 프로그래머스 소수
- beautifulsoup
Archives
- Today
- Total
IT 개발자_S
알고리즘 조합 본문
반응형
● 조합을 이용한 알고리즘을 구현 할 수 있다.
● 공식 n-1Cr + n-1Cr (n개의 숫자, r 조합의 개수)
조합이란? n개의 숫자 중 r개를 순서와 상관 없이 뽑는 경우를 의미한다.
(순열이란 n개의 숫자 중 r개를 순서와 관련하게 뽑는 경우)
예를 들어
[1,2,3] 3개의 숫자가 존재하고 2개를 조합하여, 순서와 상관없이 뽑게 되면
n-1Cr-1 + n-1Cr = 2C1 + 2C2 = 2+1 = 3가지의 경우의수가 된다.
(nCr = n!/ r! )
그렇다면 조합의경우의수를 어떻게 구현해야하는지 Java 소스 구현을 통해 알아보자.
1. 조합의 경우의 수 구하기
재귀호출 방법을 이용한 경우의 수를 구해보자.
예를들어 3C2은
분모 3* 2! = 2 *1! = 3*2*1 , 분자 2 * 1! = 2
재귀호출 방법으로 1! 나올때까지 호출 해주면 된다.
public static void main(String[] args) {
// TODO Auto-generated method stub
}
/*팩토리얼 계산*/
static int combination(int n){
int cnt = 0;
if(n <=1) return 1;
return n*combination(n-1);
}
/*조합 계산*/
public static int combination1(int n, int r) {
if(n == r || r == 0)
return 1;
else
return combination(n - 1, r - 1) + combination(n - 1, r);
}
반응형
'IT > 알고리즘_JAVA' 카테고리의 다른 글
[프로그래머스] 소수찾기 (2) | 2022.03.23 |
---|---|
[프로그래머스] 가장큰수 (0) | 2020.06.01 |
[프로그래머스] k번째수 (0) | 2020.06.01 |
[프로그래머스] 탑 (0) | 2020.05.31 |
[프로그래머스] 완주하지 못한 선수 (0) | 2020.05.27 |
Comments