숫자 12145가 있다고 가정합니다. 다음 규범에 따라 숫자의 자릿수를 영어 알파벳으로 매핑하는 함수를 작성해야 합니다. 알파벳은 1의 경우 'a', 2의 경우 'b', 3의 경우 'c'와 같이 1 기반 인덱스에 따라 매핑됩니다.
숫자를 매핑하는 방법에는 여러 가지가 있을 수 있습니다. 위의 숫자 121415를 예로 들어 보겠습니다.
다음과 같이 매핑할 수 있습니다. -
12145->1,2,1,4,5->a,b,a,d,e
그것은 또한 될 수 있습니다 -
12145->12,1,4,5->l,a,d,e
그것은 또한 될 수 있습니다 -
12145->12,14,5->l,n,e
등등. 그러나 12145는 알파벳에 45에 대한 매핑이 없기 때문에 1,2,1,45가 될 수 없습니다. 따라서 우리 함수는 알파벳 매핑의 모든 순열 배열을 반환해야 합니다.
이에 대한 코드는 -
예시
const num = 12145; const mapToAlphabets = num => { const numStr = '' + num; let res = []; const shoveElements = (left, right) => { if (!left.length) { res.push(right.map(el => { return (+el + 9).toString(36); }).join('')); return; }; if(+left[0] > 0){ shoveElements(left.slice(1), right.concat(left[0])); }; if(left.length >= 2 && +(left.slice(0, 2)) <= 26){ shoveElements(left.slice(2), right.concat(left.slice(0, 2))); }; }; shoveElements(numStr, []); return res; } console.log(mapToAlphabets(num));
출력
콘솔의 출력 -
[ 'abade', 'abne', 'aude', 'lade', 'lne' ]