Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트(JavaScript)로 영어 알파벳을 그리스 문자로 변환하는 방법

문제 개요

대문자 영어 알파벳으로 구성된 문자열 str을 첫 번째이자 유일한 인수로 받아 처리하는 자바스크립트 함수를 작성해야 합니다.

영어 알파벳과 그리스 문자 사이에는 다음과 같은 매핑 규칙이 주어집니다.

A=α (알파)   B=β (베타)     D=δ (델타)
E=ε (엡실론)  I=ι (이오타)    K=κ (카파)
N=η (에타)   O=θ (세타)     P=ρ (로)
R=π (파이)   T=τ (타우)     U=μ (뮤)
V=υ (입실론)  W=ω (오메가)   X=χ (카이)
Y=γ (감마)

함수는 그리스 문자로 매핑되는 알파벳을 해당 그리스 문자로 교체하고, 매핑이 존재하지 않는 알파벳은 원래의 영어 알파벳을 그대로 유지한 새로운 문자열을 반환해야 합니다.

입력 예시

const str = 'PLAYING';

출력 예시

const output = 'ρlαγιηg';

위 결과에서 P, A, Y, I, N은 각각 ρ, α, γ, ι, η로 변환되었고, 매핑이 없는 L과 G는 소문자 l, g로 유지된 것을 확인할 수 있습니다.

구현 코드

const str = 'PLAYING';

const convertLang = (str) => {
   const map = {
      a:'α', b:'β', d:'δ', e:'ε',
      i:'ι', k:'κ', n:'η', o:'θ',
      p:'ρ', r:'π', t:'τ', u:'μ',
      v:'υ', w:'ω', x:'χ', y:'γ'
   };
   return str.replace(/./g, char => {
      if (map[char.toLowerCase()]) {
         // 대문자인 경우 그리스 문자로 교체
         return char === char.toUpperCase()
            ? map[char.toLowerCase()]
            : map[char];
      }
      // 매핑이 없는 문자는 소문자로 반환
      return char.toLowerCase();
   });
};

console.log(convertLang(str));

실행 결과

Ρlαγιηg

코드 동작 원리

  • 매핑 객체 정의: 영어 소문자 알파벳을 키(key)로, 대응되는 그리스 문자를 값(value)으로 하는 객체 map을 선언합니다.
  • 문자 단위 순회: replace() 메서드와 정규 표현식 /./g를 사용해 문자열의 모든 문자를 한 글자씩 검사합니다.
  • 대소문자 판별: char === char.toUpperCase() 조건으로 대문자 여부를 확인합니다. 대문자이면서 매핑이 존재하면 그리스 문자로 교체됩니다.
  • 예외 처리: 매핑 객체에 없는 문자(L, G 등)는 toLowerCase()를 통해 소문자 형태로 그대로 반환됩니다.

이처럼 객체 기반 매핑과 정규 표현식을 조합하면 복잡한 조건문 없이도 간결하게 문자 치환 로직을 구현할 수 있으며, 매핑 객체에 새로운 문자 쌍을 추가하는 것만으로 손쉽게 확장할 수 있습니다.