문제 정의
문자열을 입력받아 아래 알고리즘에 따라 암호화된 결과를 반환하는 자바스크립트 함수를 작성해야 합니다.
- 입력 문자열은 공백으로 구분된 단어들로만 이루어져 있습니다.
- 각 단어는 다음 규칙에 따라 암호화합니다.
- 첫 번째 글자는 해당 문자의 ASCII 코드 값으로 변환합니다.
- 두 번째 글자는 마지막 글자와 서로 위치를 바꿉니다.
예를 들어 이 규칙을 적용하면 문자열 'good'은 '103doo'로 암호화됩니다. 첫 글자 'g'의 ASCII 코드가 103이고, 두 번째 글자 'o'와 마지막 글자 'd'가 서로 뒤바뀌어 'doo'가 되기 때문입니다.
구현 예시
다음은 위 규칙을 그대로 구현한 코드입니다.
const str = 'good';
const encryptString = (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(encryptString(str));코드 동작 원리
코드가 어떤 순서로 작동하는지 단계별로 살펴보겠습니다.
- 문자 분해: split('')으로 문자열을 개별 문자 배열로 만든 뒤, 구조 분해 할당을 통해 첫 번째 문자(first)와 두 번째 문자(second)를 추출합니다.
- 마지막 문자 추출: str[str.length - 1]로 마지막 문자(last)를 가져옵니다.
- ASCII 코드 변환: first.charCodeAt(0)으로 첫 글자의 ASCII 코드 값을 결과 문자열 맨 앞에 추가합니다.
- 위치 교환: 원래 마지막에 있던 문자를 두 번째 자리에, 원래 두 번째였던 문자는 마지막 자리에 배치합니다.
- 중간 문자 유지: 인덱스 2부터 length-2까지의 중간 문자들은 반복문을 통해 순서대로 그대로 추가합니다.
출력 결과
103doo