배열 [1,2,3] 3개의 요소를 활용하여 조합, 순열, 중복순열의 기본 동작을 알아본다.
- 공통적인 것들
- 총 요소의 개수 : N개
- 조합할 경우의 수 : R개
- for 반복문의 개수 === R개와 동일하다.
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;
}
- 중복순열이랑 동일하게 for문의 범위는 동일하지만, 이 부분만 다르다!
순열을 중복이 안되기 때문에 i,j,k 중 두개의 인덱스만 같을 경우를 걸러준다.
continue 같은 요소인 경우 다음 로직을 실행하지 않고 넘어간다.if (i === j || j === k || k === i) continue;
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개를 뽑거나, 1개를 뽑는 경우의 수는.. 3개는 1개, 1개는 3개가 나오기에 할 의미가 없다.)
// 순서가 뒤집히는 요소가 나오지 않는 것을 보여주는 과정 예시
// i와 j가 3 미만, 즉 인덱스 2번째 요소 까지만 반복문돌린다.
i=0 배열의 0번째 요소 "1"
j=i+1 배열의 1번째 요소 2 [1,2]
j=i+1 배열의 2번째 요소 3 [1,3]
result.push([lookup[i], lookup[j]])=> [[1,2],[1,3]]
i=1 배열의 1번째 요소 2
j=i+1 배열의 2번째 요소 3 => [2,3]
result.push([lookup[i], lookup[j]]) => [[1,2],[1,3],[2,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++) {
result.push([lookup[i], lookup[j]])
}
}
return result;
}