문제 상황
JavaScript로 문자열을 입력받아 아래 알고리즘에 따라 암호화하는 함수를 작성해야 합니다.
- 문자열은 공백으로 구분된 단어들로만 이루어져 있습니다.
- 문자열 내 각 단어는 다음 규칙에 따라 암호화됩니다.
- 첫 번째 글자는 해당 문자의 ASCII 코드 값으로 변환합니다.
- 두 번째 글자는 마지막 글자와 서로 위치를 교환합니다.
이 규칙을 적용하면 문자열 'good'은 다음과 같이 암호화됩니다.
- 첫 글자
'g'의 ASCII 코드는103 - 두 번째 글자
'o'와 마지막 글자'd'가 교환되어'doo' - 최종 결과:
'103doo'
코드 구현
다음은 위 알고리즘을 구현한 코드입니다.
const str = 'good';
const encyptString = (str = '') => {
const [first, second] = str.split('');
const last = str[str.length - 1];
let res = '';
res += first.charCodeAt(0);
res += last;
for(let i = 2; i < str.length - 1; i++){
const el = str[i];
res += el;
};
res += second;
return res;
};
console.log(encyptString(str));코드 동작 원리
함수가 처리되는 과정을 단계별로 살펴보면 다음과 같습니다.
str.split('')을 통해 문자열을 개별 문자 배열로 분리한 뒤, 구조 분해 할당으로 첫 번째(first)와 두 번째(second) 문자를 추출합니다.- 인덱스 접근 방식으로 마지막 문자(
last)를 가져옵니다. charCodeAt(0)메서드로 첫 번째 문자의 ASCII 코드 값을 결과 문자열에 추가합니다.- 마지막 문자를 이어 붙여 두 번째 글자와의 교환 효과를 만듭니다.
- 인덱스 2부터 마지막에서 두 번째 위치까지의 중간 문자들을 순회하며 그대로 추가합니다.
- 마지막에 두 번째 글자를 덧붙여 암호화된 문자열을 완성하고 반환합니다.
실행 결과
위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.
103doo
이처럼 charCodeAt() 메서드와 문자열 인덱싱을 활용하면 별도의 외부 라이브러리 없이도 간단한 문자열 암호화 로직을 손쉽게 구현할 수 있습니다.