toLeetSpeak.js (7kyu 64)

Codewars 알고리즘 풀이


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: 전역 검색