문제
문자배열이 주어지면, 주어진 문자로 만들수 있는 모든 문자배열 조합을 프린트 하시오.
input: ABC
output: ABC ACB BAC BCA CBA CAB
풀이
const output = (input) => {
const strArr = input.split('')
const max = strArr.reduce((prev, cur, idx) => prev * (idx + 1), 1)
const out = []
const makeArr = () => {
const str = strArr.sort(() => 0.5 - Math.random()).join('')
out.push(str)
return out.indexOf(str) < 0 || out.length < max ? makeArr() : out
}
return makeArr()
}
output('AB') // ["BA", "AB"]
output('ABC') // ["CAB", "CBA", "ABC", "ABC", "BCA", "CBA"]
[출처: https://mailprogramming.com/]