"이전 시간에 드럭워즈에서는 순서가 매우 중요하다" 라고 말씀 드렸습니다.
- 관련 글 : [drugwars] 드럭워즈 시뮬레이션
과연 그렇다면 이 순서를 배치하는 방법이 얼마나 될까 ?!
순열은 Permutation의 앞글자를 따서 P로 나타냅니다.
- nPr의 의미는 n개의 숫자에서 r개를 뽑아 정렬하는 가짓수 입니다.
1P1 1
2P2 2
3P3 6
4P4 24
5P5 120
6P6 720
7P7 5040
8P8 40320
9P9 362880
10P10 3628800
방법이 엄청 많습니다.
1-4개 까진 어떻게 해보겠는데 ... 그 이상이 되면 맨붕이 됩니다 -_-;
맺음말 ( 드럭워 공략 )
- 빈집털이 : 닌자 ( 5분안에 털 수 있음) , 바운서 ( 11분 이지만 싸고 많이 나름 )
- 공격/방어 : 모든병력(현재 10가지종류)을 종류별로 사용하세요, 약한애(공방합이 낮은 병력 또는 싼 애들)를 앞쪽에 배치하세요
- 좀 변수가 더 있긴 하지만 위 2가지만 잘 챙겨도 든든 합니다.
관련코드
let len = 0;
function doPermutation(arr, startIdx){
let length = arr.length;
if(startIdx == length-1){
// console.log( arr );
len++;
}
for(let i=startIdx; i<length; i++){
swap(arr, startIdx, i);
doPermutation(arr, startIdx+1);
swap(arr, startIdx, i);
}
}
function swap(arr, n1, n2){
let temp = arr[n1];
arr[n1] = arr[n2];
arr[n2] = temp;
}
function init(){
let arr = [0];
for(let i=1;i<=10;i++){
doPermutation(arr,0);
console.log(`${i}P${i}`, len);
len = 0;
arr.push(i);
}
}
init();