Challenge

1-3 Challenge 문자열 역순 배치 및 알파벳 하나씩 오른쪽으로 이동

kagan-draca 2024. 8. 19. 18:01

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로 소문자 영역의 아스키 코드로 돌려준다.

}) 

 

위와 같은 방식으로 영어 단어를

알파벳 순으로 몇 칸 이동시켜 변경할 수 있고,

순환 시킬 수 있다.