728x90
class Solution {
public int solution(int balls, int share) {
int answer = 0;
answer = combination(balls, share);
// 재귀함수. balls 와 share 의 개수가 같거나 share 가 0인 경우 항상 1을 반환
// 그렇지 않은 경우, balls 개의 구슬 중 share 개의 구슬을 선택하는
// 모든 경우의 수를 계산하기 위해 재귀함수 사용.
return answer;
}
private int combination(int balls, int share) {
if (balls == share || share == 0) {
return 1;
} else {
return combination(balls - 1, share - 1) + combination(balls - 1, share);
}
}
}
* 구슬을 나누는 경우의 수 라는 문제다.
* 재귀함수라 그런지 어렵다.
* combination 에 익숙한 상태에서 문제를 본다면 쉽게 풀 수 있는 문제 같기도 하다.
* 뭔가 문제 풀 때마다 느끼는데 개발 쪽에 재능이 없는 것 같다.. 하
728x90
'코딩테스트 연습 > 프로그래머스 Lv.0' 카테고리의 다른 글
프로그래머스 코딩테스트 lv.0 - 2차원으로 만들기. (Java) (0) | 2023.08.02 |
---|---|
프로그래머스 코딩테스트 lv.0 - 점의 위치 구하기. (Java) (0) | 2023.08.01 |
프로그래머스 코딩테스트 lv.0 - 가위 바위 보 (1). (Java) (0) | 2023.07.30 |
프로그래머스 코딩테스트 lv.0 - 모스 부호 (1). (Java) (0) | 2023.07.29 |
프로그래머스 코딩테스트 lv.0 - 개미 군단. (Java) (0) | 2023.07.28 |