N개의 자연수 중에서 M개를 골라서 나열하는데 중복 선택이 가능하므로 중복 순열문제 입니다.
중복 순열의 경우의 수를 구하는 식은 다음과 같습니다. $$ _n\hat{P}_r = n^r $$
- n, m:
$_nC_m$ - arr: 수열
두번째 입력 예제로 4개중에 2개를 고르는 중복조합의 경우의 수는
- m이 1인경우 경우의 수는 항상 n이므로 예외처리 합니다.
- 중복조합이므로 재귀함수안에서 0부터 반복문을 시작합니다.
- tmp에 m까지 선택한 값을 저장하고 재귀함수를 호출한 이후에는 pop함수로 제거합니다.
- 중복 선택이 된다는걸 순서가 상관없다는 말로 잘못보고 조합이라고 생각하고 풀고 있었다.
- 중복 순열과 중복 조합 학습을 추가로 진행했다.
- 처음 작성한 로직이 가장 메모리가 적게들고 속도가 빠릅니다.