Skip to content

Commit

Permalink
Add Post: 중복 조합(Java)
Browse files Browse the repository at this point in the history
  • Loading branch information
Chaerim1001 committed Mar 8, 2024
1 parent 5209c93 commit 872b0c2
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions _posts/2024-03-07-중복 조합(Java).md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
title: 중복 조합(Java)
date: 2024-03-07
categories: [Algorithm, 이론]

tags: [Algorithm, CodingTest]
---

## 중복 조합
조합은 `n`개의 숫자 중에서 `r`개를 뽑아야 할 때 **순서를 고려하지 않고** 뽑는 것을 말합니다.

오늘 살펴볼 **중복** 조합은 `n`개의 숫자 중에 **중복을 신경쓰지 않고** `r`개를 뽑는 것을 뜻합니다.

## 구현 방법
그렇다면 이 중복 조합은 코드 상에서 어떻게 구현할 수 있을까요?

조합에서는 `boolean[] vistied` 를 사용해서 선택 여부에 대한 조건을 확인했는데요! 중복 조합은 값이 중복으로 들어가도 괜찮기 때문에 선택 여부를 확인할 필요가 없습니다.

```java
/**
* @param arr 숫자를 뽑아낼 배열
* @param result 뽑은 숫자 결과가 저장될 리스트
* @param start 시작이 될 인덱스
* @param r 뽑고자 하는 숫자의 개수
*/
static void duplicatedCombination(int[] arr, ArrayList<Integer> result, int start, int r) {
if(r == 0) {
print(result);
return;
}

for(int i=start; i<arr.length; i++) {
result.add(arr[i]);
duplicatedCombination(arr, result, i, r-1);
result.remove(result.size()-1);
}
}

static void print(ArrayList<Integer> result) {
for(int n: result) {
System.out.print(n+ " ");
}

System.out.println();
}
```

### 결과

![1](/assets/img/posts/2024-03-07/result2.png){: width="200"}


> 참고 <br>
> https://hanyeop.tistory.com/362
Binary file added assets/img/posts/2024-03-07/result2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 872b0c2

Please sign in to comment.