let stringReverse = string => {
return string
.split("")
.reverse()
.map(element => {
const Ask = element.toLowerCase().charCodeAt();
if (Ask >= 97 && Ask <= 122)
return String.fromCharCode(((Ask - 97 + 1) % 26) + 97);
})
.join("");
};
console.log(stringReverse("hello"));
매개변수로 전달 받은
문자열을
split("")
으로 단어 마다 쪼갠 배열로 만들어준다.
배열에는
reverse()
라는 함수가 있기 때문에
단어 모음 배열.reverse()
로 단어 요소들의 순서를 역순으로 바꿔준다.
배열의 map()함수는 사용자가 요소를 조작한 새로운 배열을 만들어주는데
( 설명의 편의성을 위해 주석으로 설명하겠습니다...)
요소가 뒤집힌 배열.map((element) =>
{
const Ask = element.toLowerCase().charCodeAt()
// toLowerCase()로 요소에 혹시 모를 대문자 단어를 소문자로 변경 후
// charCodeAt()으로 소문자를 아스키 코드로 변환한다.
// 아스키 코드 a = 97 ~ z = 122
if(Ask >= 97 && Ask <= 122)
// 만약 소문자 영역 안에 있는 아스키 코드이면 => 소문자 단어
return String.fromCharCode(((Ask - 97 + 1) % 26) + 97);
// Ask - 97로 해당 단어의 아스키 코드를 0 ~ 25 사이로 변경 후
// +1 오른쪽으로 한 칸 이동시켜준다.
// % 26으로 z 범위를 벗어난 아스키 코드를 0 ~ 25 사이를 순환하게 만들고
// +97로 소문자 영역의 아스키 코드로 돌려준다.
})
위와 같은 방식으로 영어 단어를
알파벳 순으로 몇 칸 이동시켜 변경할 수 있고,
순환 시킬 수 있다.
'Challenge' 카테고리의 다른 글
2-1 Challenge 문자열에서 중복 제거 (0) | 2024.08.20 |
---|---|
1-5 Challenge 자리 수 제거 후 가장 큰 수 (0) | 2024.08.19 |
1-4 Challenge 다양한 초밥 종류의 개수 (0) | 2024.08.19 |
1-2 Challenge [ 짝수 개수, 홀수 개수] (0) | 2024.08.19 |
1-1 Challenge 최소 공약수와 최대 공배수 (0) | 2024.08.19 |