상세 컨텐츠

본문 제목

시저 암호 - Javascript

Programming/Algorithm

by 쌩우 2019. 4. 16. 19:27

본문

문제

: 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 한다. 예를 들어AB는 1만큼 밀면BC가 되고, 3만큼 밀면DE가 된다.z는 1만큼 밀면a가 된다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보아라.

제한 조건

  • 공백은 아무리 밀어도 공백
  • s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있다.
  • s의 길이는 8000 이하이다.
  • n은 1 이상, 25 이하인 자연수이다.

입출력 예

snresult
AB1BC
z1a
a B z4e F d

알파벳과 관련된 알고리즘을 풀 때에는 아스키 코드표를 이용하면 훨씬 편해진다.

각 숫자와 알파벳 및 기호가 1:1로 대응한다.

function solution(s, n) {
   let arr = []; 
    n = n % 26 
    for ( let i = 0; i < s.length; i++ ) { 
        const word = s.charCodeAt(i) 
        if ( word == 32 ) { arr.push(" ") } 
        else if ( word >= 65 && word <= 90 ){ 
         if ( word+n > 90 ) { arr.push(String.fromCharCode(word+n-26)) } 
            else { arr.push(String.fromCharCode(word+n)) } 
        } 
        else if ( word >= 90 && word <= 122 ){
            if ( word+n > 122 ) { arr.push(String.fromCharCode(word+n-26)) } 
            else { arr.push(String.fromCharCode(word+n)) } 
        } 
    } return arr.join("")
}

관련글 더보기

댓글 영역