[javascript / 알고리즘] 문자열의 모든 경우의 수 가져오기


해당 포스팅은 제가 사용하려고 만든 포스팅이므로 자세한 설명은 생략합니다. 만약 이해가 안될 시 댓글을 남겨주시면 답변드리겠습니다.

 

알고리즘을 풀다보면 배열의 경우의 수가 필요한 경우가 존재합니다.

Python 같은 경우는
내장라이브러리인 itertools에 Permutation같은 함수가 있어서
꽤 쉽게 구해지지만

Javascript 같은 경우는 따로 내장 라이브러리가 없어서
실제 구현해야합니다.

그래서 아래와 같이 만들게 되었습니다.
(더 좋은 방법이 있을거 같긴 한데... 내 머리로선 이게 한계인듯 하다...)


실행 함수

function getNumbeOfCases(numbers) {
	// 중복을 막기 위해서
	const result = new Set();

	// 재귀 함수를 통해 만든다.
	const temp = (currFix, eachArr) => {
		for (let i = 0; i < eachArr.length; i++) {
			const tempEachArr = [...eachArr];
			const tempCurrFixVal = tempEachArr.splice(i, 1)[0];
			const tempCurrFix = currFix + tempCurrFixVal;
			result.add(Number(tempCurrFix));
			if (tempEachArr.length > 0) temp(tempCurrFix, tempEachArr);
		}
	};

	// 시작
	for (let i = 0; i < numbers.length; i++) {
		let target = numbers[i];
		result.add(Number(target));

		const eachArr = [...numbers];
		eachArr.splice(i, 1);

		temp(target, eachArr);
	}

	return new Array(...result);
}

 

사용

console.log(getNumbeOfCases(["0", "1", "2"]));

 

이 글을 공유하기

댓글