[기본 수학 이론] 경우의 수 - 순열

김수연·2022년 9월 4일
0
post-thumbnail

경우의 수

	어떤 사건 혹은 일이 일어날 수 있는 경우의 가짓수를 수로 표현

순열

순열 설명 이미지

1. 반복문 for

let input = ['a', 'b', 'c'];
let count = 0;

function permutation(arr){
	for(let i = 0; i < input.length; i++){
  		for(let j = 0; j < input.length; j++){
    		if( j == i) continue;
    		for(let k = 0; k < input.length; k++){
     			if( k == j ) continue;
     			if( k == i ) continue;
      
      			console.log(i, j, k);
      			count++;
    		}
  		}
	} 
}

permutation(input);
console.log(count);
  • 뽑는 개수 r의 수가 커질수록 for 반복문이 늘어나 복잡해짐

2. 재귀

let input = ['a', 'b', 'c'];
let count = 0;

function permutation(arr, s, r){
  if(s == r) {
    count++;
    console.log(input);
    return;
  } 
	
  for( let i = s; i <= r; i++){
    [arr[i], arr[s]] = [arr[s], arr[i]];
    permutation(arr,s+1,r);
   	[arr[i], arr[s]] = [arr[s], arr[i]];
  }
}

permutation(input, 0, 2);
console.log(count);
  • 인자와 배열을 전달해서 동일한 for 반복문을 재활용
  • 재귀를 통해 반복문이 진행될 때 i,s 의 업로드 과정을 잘 따라가야 이해 할 수 있음
profile
길을 찾고 싶은 코린이 of 코린이

0개의 댓글