순열이므로, 1,2,3 과 3,2,1 은 다르다.
조합이므로, 1,2,3과 3,2,1은 동일하다.
즉, 중복을 고려해야 한다.
원리
: 중복처리가 되므로, 이미 앞에서 처리된 내용을 다시 확인하지 않으므로, 재귀함수에 인자로 idx 값이 필요하다.
그리고 앞으로 가서 확인하지 않기 때문에 bool값 필요 없다.
원리
: 순서를 고려하는 것이므로, 다시 앞의 value를 참조하는 것이므로, go 함수에서 idx값 필요 없다.
앞의 idx로 가서 확인하는 것이고, 또 중복허용하지 않기 때문에 bool값 필요하다.
원리.
: 중복 처리를 하지 않으면서 순서를 고려하면서 나열 하는 것이므로
앞선 value를 다시 참조하므로, go 함수에 idx 값 필요 하지 않다.
원리
: 중복 처리를 하고 있고, 다음 원소가 다음에 오는 것이 아니라,
동일한 값이 연속으로 나올 수 있기 때문에 idx + 1을 건네 주지 말고, idx 를 건네자.

뽑는 개수가 작으면 그냥 for문으로 바로 가자.
이때의 시작 복잡도는 위의 경우 v.size()의 3제곱이다.
잘 생각하면 된다. 5개 중에서 순서 상관없이 중복처리된 3개 어떻게 뽑을까?? 를 생각하면 된다.
아이디어.
-> dfs 인덱스 값이 중요하다. idx + 1 이 아니다!!


백준 15650 : N과 M (2)
원리
: 순서를 고려하는 것이므로, 다시 앞의 value를 참조하는 것이므로, go 함수에서 idx값 필요 없다.
순열은 순서 를 고려해서 배치하는 것이므로, 이미 방문된 원소도 다시 방문할 수 있게 해야 한다.
그런데 이 때 중복을 처리하는 것이므로, bool 변수 필요하다.

아래는 이전 작성.
1) 조합의 경우
: 5명 사람 중에서 3개를 뽑아야할때
2) 순열의 겨우
: 5명 사람 중에서 3명을 뽑는데 , 순서에 상관 있는 조건이 붙은 경우,
// 예를 들면, 들어온 순서대로 번호표를 받는다.
-> 순열이다.
: 5개 중에서 3개를 뽑으라고 하는 경우, next_permutation 사용하면 안된다.
-> reverse를 사용하면 된다.
https://velog.io/@kwt0124/260411%EA%B3%B5%EB%B6%80-%ED%95%98%EC%9E%90

순열이란 순서에 상관 있게 선택하는 경우이다.
1 2 3 4에서 3개를 뽑는다고 해보자.
-> 아래의 숫자들을 보면, 순서가 모두 다르게 배치된 것을 확인할 수 있지만 , 조합은 그렇지 않다.// 아래에 있다.
123 / 124 / 132 / 134 / 142 / 143
213 / 214 / 231 / 234 / 241 / 243
312 / 314 / 321 / 324 / 341 / 342
412 / 413 / 421 / 423 / 431 / 432
-> 총 24개다.
문제

코드

조합이란 순서에 무관하게 동일한 경우, 를 나타내는 겨우이다.
1 2 3 4 에서 3개 뽑는 조합은
123 / 124 / 134
234 / 이고
-> 순서에 상관 없이 그냥 어떤 숫자를 이미 뽑았다고 하면 만들 필요 없다는 것이다.
순열의 경우 321도 되지만, 조합은 순서 무관하게 뽑기만 하는 경우이다.
4c3 이고 이 때의 수식은
4! / 3! 이다.
-> 총 4개다.


중복 순열이란 순서에 상관있게 중복되는 거를 뽑는거다.
1 2 3 4 중에서 3개를 뽑아보자.
111 112 113 114 123 124 134
-> 4 4 4의 시간복잡도를 가진다.


