사용자를 고유하게 식별하기 위해 고유한 사용자 ID를 제공해야 하는 로그인 시스템이 있다고 가정합니다. 그리고 명백한 보안상의 이유로 사용자 ID를 난독화하여 숫자를 추측하기가 상당히 어렵도록 합니다.
기본적으로 두 가지 함수를 작성해야 합니다.
-
인코딩(),
-
디코드()
첫 번째 함수는 숫자 입력을 기본 26 알파벳 매핑으로 변환해야 합니다. 그리고 두 번째 함수는 알파벳 매핑을 원래 숫자로 다시 변환해야 합니다.
대부분의 해싱 알고리즘이 앞뒤로 변환을 제공하지 않기 때문에 이것이 매우 실용적이지는 않지만 이 질문의 목적을 위해 우리는 그것을 고려하지 않습니다.
예를 들어 - 숫자가 31이면
encode(31) = 'ea'
and, decode('ea') = 31 예시
이에 대한 코드는 -
const num = 31;
const encode = num => {
let res = '';
const legend = 'zabcdefghijklmnopqrstuvwxy';
while(num){
const rem = num % (legend.length);
res += legend[rem];
num = (Math.floor(num / legend.length));
};
return res;
};
const decode = str => {
let num = 0;
const legend = 'zabcdefghijklmnopqrstuvwxy';
for(let i = 0; i < str.length; i++){
const ind = legend.indexOf(str[i]);
num += (ind * Math.pow(legend.length, i));
};
return num;
}
console.log(encode(num));
console.log(decode('ea')); 출력
콘솔의 출력은 -
ea 31