순열과 조합
•
순열(Permutation)
◦
개의 원소 중에서 개의 원소들을 나열하는 경우의 수
◦
공식으로 나타내면 로 나타낸다.
▪
•
조합(Combination)
◦
개의 원소 중에서 개의 원소들을 고르는 경우의 수
◦
공식으로 나타내면 로 나타낸다.
▪
BOJ_10974_모든 순열_JS
function solution(input) {
const check = Array(input + 1).fill(false);
const result = [];
const arr = [];
function permutation(level) {
if (level === input) {
result.push(arr.join(' '));
}
for (let i = 1; i <= input; i += 1) {
if (check[i] === true) {
continue;
}
arr.push(i);
check[i] = true;
permutation(level + 1);
arr.pop();
check[i] = false;
}
}
permutation(0);
return result.join('\n');
}
JavaScript
복사
•
나열하는 것에 중점을 둔다. 따라서 방문한 노드를 제외하고 배열의 처음부터 탐색한다.
•
따라서 for문의 i가 1부터 시작.
BOJ_6603_로또_JS(조합)
function solution(input) {
const result = [];
input.forEach((element) => {
const [k, ...s] = element.split(' ').map(Number);
const arr = [];
const combination = (index, level) => {
if (level === 6) {
result.push(arr.join(' '));
return;
} else {
for (let i = index; i < k; i += 1) {
arr.push(s[i]);
combination(i + 1, level + 1);
arr.pop();
}
}
};
combination(0, 0);
result.push('');
});
return result.join('\n');
}
JavaScript
복사
•
뽑는 것에 중점을 둔다. 따라서 for문의 i가 전달받은 배열의 다음 index 값으로 시작한다.