Problem
- Your task is to write a function that converts a regular english sentence to LeetSpeak.
- 일반 영어 문장을 LeetSpeak로 변환하는 함수를 작성한다.
- Consider only uppercase letters and spaces.
Use this alphabet:
A: '@', B: '8', C: '(', D: 'D',
E: '3', F: 'F', G: '6', H: '#',
I: '!', J: 'J', K: 'K', L: '1',
M: 'M', N: 'N', O: '0', P: 'P',
Q: 'Q', R: 'R', S: '$', T: '7',
U: 'U', V: 'V', W: 'W', X: 'X',
Y: 'Y', Z: '2'
Solution 01
function toLeetSpeak(str) {
const leet = {
A: '@',
B: '8',
C: '(',
E: '3',
G: '6',
H: '#',
I: '!',
L: '1',
O: '0',
S: '$',
T: '7',
Z: '2'
};
return str.split('').map(i => {
return leet[i] ? leet[i] : i;
}).join('');
}
toLeetSpeak('LEET'); // 1337
toLeetSpeak('SSUP'); // $$UP
toLeetSpeak('CODEWARS'); // (0D3W@R$
map()
: 배열 내 모든 element에 대해, 호출한 함수의 결과를 모아 새 배열로 반환한다.
split()
: 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.
join()
: 배열의 모든 element를 결합하고, 새 문자열로 반환한다.
Solution 02
function toLeetSpeak(str) {
const leet = {
A: '@',
B: '8',
C: '(',
E: '3',
G: '6',
H: '#',
I: '!',
L: '1',
O: '0',
S: '$',
T: '7',
Z: '2'
};
return str.split('').map(i => leet[i] || i).join('');
}
toLeetSpeak('LEET'); // 1337
toLeetSpeak('SSUP'); // $$UP
toLeetSpeak('CODEWARS'); // (0D3W@R$
Solution 03
function toLeetSpeak(str) {
const leet = {
A: '@',
B: '8',
C: '(',
E: '3',
G: '6',
H: '#',
I: '!',
L: '1',
O: '0',
S: '$',
T: '7',
Z: '2'
};
return str.replace(/[ABCEGHILOSTZ]/g, i => leet[i]);
}
toLeetSpeak('LEET'); // 1337
toLeetSpeak('SSUP'); // $$UP
toLeetSpeak('CODEWARS'); // (0D3W@R$
replace()
: 대응되는 문자열을 찾아 다른 문자열로 치환한다.
g
: 전역 검색