algorithm,

알고리즘 풀이

FreeVue FreeVue Follow Apr 19, 2019 · 1 min read
알고리즘 풀이
Share this

문제

문자배열이 주어지면, 주어진 문자로 만들수 있는 모든 문자배열 조합을 프린트 하시오.

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/]