이번 글에서는 1부터 26 사이의 숫자(양 끝값 포함)를 입력받아 해당 숫자에 대응하는 영어 알파벳 대문자를 반환하는 함수를 작성해 보겠습니다. 만약 입력된 숫자가 이 범위를 벗어난다면 -1을 반환하도록 처리합니다.
예를 들어 다음과 같이 동작합니다.
toAlpha(3) = C toAlpha(18) = R
즉, 숫자 1은 'A'에, 26은 'Z'에 각각 대응됩니다.
ASCII 코드란?
ASCII 코드는 키보드에 존재하는 모든 문자와 숫자를 표준화된 숫자 값으로 매핑한 체계입니다. 알파벳 대소문자, 숫자, 특수 문자까지 모두 고유한 코드 값을 가지고 있습니다.
특히 영어 대문자는 65부터 90까지의 코드 값에 매핑되어 있습니다. 즉, 65는 'A', 66은 'B', ... , 90은 'Z'를 나타냅니다. 이 규칙을 활용하면 숫자를 손쉽게 알파벳으로 변환할 수 있습니다.
구현 예제
JavaScript에서는 String.fromCharCode() 메서드를 사용하여 ASCII 코드 값을 문자로 변환할 수 있습니다. 전체 코드는 다음과 같습니다.
const toAlpha = (num) => {
// 유효성 검사: 숫자 타입인지, 1~26 범위 내인지 확인
if(num < 1 || num > 26 || typeof num !== 'number'){
return -1;
}
const leveller = 64;
// 실제 'A'는 65로 표현되지만,
// 우리는 1을 'A'로 매핑하고 싶으므로 64를 더함
return String.fromCharCode(num + leveller);
};
console.log(toAlpha(18));코드 설명
- 유효성 검사: 입력값이 숫자가 아니거나 1~26 범위를 벗어나면 -1을 반환합니다.
- leveller 변수: 'A'의 ASCII 코드가 65이므로, 숫자 1을 'A'로 변환하기 위해 보정값 64를 사용합니다.
- String.fromCharCode(): 계산된 ASCII 코드 값을 해당 문자로 변환해 줍니다.
실행 결과
코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
R
숫자 18에 64를 더한 값은 82이며, ASCII 코드 82는 'R'에 해당하기 때문입니다. 이처럼 간단한 산술 연산과 내장 메서드만으로 숫자와 알파벳 간의 변환을 쉽게 구현할 수 있습니다.