문제 풀기/JavaScripts

문제 45. 시저 암호(난이도 7)(아스키코드 활용)

kagan-draca 2024. 7. 29. 16:16

 

map 함수를 이용해서 삼항 연산자로 풀어볼려고 했는데...

시간만 소비하고, 풀지 못 했다...

 

그래도 map((element)=>

{

      ~~~~로 문제를 풀어봤다.

}

 

s.split("")으로 문자열을 단어 모음 배열로 만든 후

 

단어 모음 배열.map((element)=>

{

    if(element.match(' ')) return ' '

    //element.match(' ')로 공백은 공백으로 남기고

   

    const Ask = element.charCodeAt()

    // 문자 요소를 아스키 코드로 변환하고    

    if(Ask >= 65 && Ask <= 90) return String.fromCharCode((Ask - 65 + n) % 26 + 65)

    // 대문자 영역이면

    // Ask - 65로 0 ~ 25(알파벳 개수)로 변경 후

    // + n으로 알파벳 순으로 n 칸 오른쪽으로 이동 시켜준다.

    // % 26은 A ~ Z 범위를 벗어난 단어를 A ~ Z안에서 순환 시키도록 만들고

    // + 65로 다시 대문자 아스키 코드 영역 안으로 되돌려놔 준다.  

 

 

    //소문자도 마찬가지 원리로 변경시켜준다.

}

 

제출한 코드  :

 

function solution(s, n) 
{
    return s.split('')
    .map((element)=>
    {
        if(element.match(' ')) return ' ';
        const Ask = element.charCodeAt()
        if(Ask >= 65 && Ask <= 90) return String.fromCharCode((Ask - 65 + n) % 26 + 65)
        else if(Ask >= 97 && Ask <= 122) return String.fromCharCode((Ask - 97 + n) % 26 + 97)
    }).join('')
}