순열 조합

이정민·2021년 12월 15일
0

순열: n개중에 r개를 뽑아서 순서를 부여하여 조합할 수 있는 모든 경우의 수 nPr

조합: n개중에 r개를 순서와 상관없이 뽑아 조합할 수 있는 모든 경우의 수 nCr

중복 순열: 요소의 중복을 허용하고 순서를 부여하여 조합할 수 있는 모든 경우의 수

3개 중 3개를 뽑아 중복 순열을 만들어보자.=> 모든요소를 다 넣음

function forloop() {
	let result =[]; //만든 중복순열 반환할 때 
	let lookup =[1,2,3 ];
	for (let i = 0; i < 3; i++){
		let pick1 = lookup[i];
        for (let j=0; j< 3; j++){
        let pick2 = lookup[j];
       		for (let k = 0; k<3; k++){
            let pick3 = lookup[k];
            	result.push([pick1, pick2, pick3]);
        	}
    	 }
	}
return result 
}


function forloop() {
	let result =[];
	let lookup =[1,2,3 ];
		for (let i = 0; i < 3; i++){
 			for (let j=0; j< 3; j++){
				for (let k = 0; k<3; k++){
					result.push([lookup[i],lookup[j],lookup[k])
			}
 		}
	}
return result 
}

***재귀를 사용한 중복순열 3개중 3개를 뽑아서***
let result =[];
const lookup =[1,2,3];
const recursion =(count, bucket)=>{
  if (count ===0){ //탈출조건
   result.push(bucket);
   return;
}
//재귀를 통해서 실행시키고자 하는 코드 
  for(let i=0; i< 3; i++){ 
    const pick = lookup[i];
    recursion(count -1, bucket.concat(pick)); 
    //재귀시키는 코드 concat사용하는 이유 =>concat은 배열로 나오는 반면 push하면 길이가 나오기 때문에 
  }
}
recursion(3,[])

3개중 3개를 뽑아서 순열을 만들자=> 마지막이나 중간에서 중복된 요소가 있다면 패스

function forloop() {
 let result =[];
 let lookup =[1,2,3 ];
  for (let i = 0; i < 3; i++){
   for (let j=0; j< 3; j++){
    for (let k = 0; k<3; k++){
     if (i ===j|| j===k|| k===i)  continue;
       result.push([lookup[i],lookup[j],lookup[k]);
    }
  }
 }
return result 
}

3개중에 두개 뽑는 조합 => 순서를 지켜서 뽑음

function forloop() {
 let result =[];
 let lookup =[1,2,3 ];
 for(let i = 0 ; i< 3 ;i ++){
  for(let j= i+1 ; j< 3; j++){ //1로 만들 수 있는 경우의 수를 다 만들었다면 1은 사실상 그 다음에 쓸모가 없기때문에 j= i+1
   result.push([lookup[i], looup[j]]);
      }
    }
    return result
}

0개의 댓글

관련 채용 정보