문제 정의
문자열 형태의 숫자 배열을 입력받아 하나의 문자열을 반환하는 자바스크립트 함수를 작성해야 합니다. 각 숫자는 알파벳 소문자와 역순으로 대응되며, 그 규칙은 a=26, b=25, ..., z=1입니다.
또한 특수 문자도 함께 처리해야 합니다. 느낌표('!')는 27, 물음표('?')는 28, 공백(' ')은 29에 해당합니다.
예제 코드
const arr = ['5', '23', '2', '1', '13', '18', '6'];
const convertToString = (arr) => {
let res = '';
for (let char of arr) {
if (Number(char) <= 26) {
res += String.fromCharCode(123 - char);
} else {
if (char === '27') res += '!';
else if (char === '28') res += '?';
else res += ' ';
}
}
return res;
};
console.log(convertToString(arr));
출력 결과
vdyzniu
코드 동작 원리
이 코드의 핵심은 String.fromCharCode() 메서드입니다. 아스키 코드 체계에서 소문자 'a'는 97, 'z'는 122에 해당합니다. 역순 매핑 규칙에 따라 숫자 n에 대응하는 문자는 123 - n이라는 아스키 코드 값을 가집니다.
- n = 1 → 123 − 1 = 122 → 'z'
- n = 26 → 123 − 26 = 97 → 'a'
- n = 5 → 123 − 5 = 118 → 'v'
배열의 각 요소를 순회하면서 값이 26 이하이면 위 공식으로 알파벳 문자를 생성하고, 27 이상이면 조건문을 통해 각각 '!', '?', 공백으로 변환한 뒤 결과 문자열에 이어 붙입니다. 최종적으로 완성된 문자열을 반환하면 변환이 끝납니다.