[자바스크립트 알고리즘] - 시저 암호

Marcus·2018년 12월 27일
0

알고리즘

목록 보기
7/14
post-thumbnail

안녕하세요 Macus입니다.

이전편 문자열을 정수로 바꾸기를 이어 6편을 작성하겠습니다.
6편은 시저 암호라는 알고리즘 문제입니다.

문제 설명


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

제한 조건


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

입출력 예


스크린샷 2018-12-27 오후 4.52.53.png

위에 설명을 한번 풀어보세요!

문제 풀이


function solution(s, n) {
    let result = ""; 
    for (let i=0; i<s.length;i++) { 
        if ( s[i] == ' ' ) 
            result += ' ' 
        else 
            result += String.fromCharCode( (s.charCodeAt(i)>90)
                    ? (s.charCodeAt(i)+n-97)%26+97 
                    : (s.charCodeAt(i)+n-65)%26+65 ) 
    } 
    return result;
}

저는 위와 같이 풀어봤습니다.
삼항연산자를 이용해서 아스키코드를 참고하고 90을 기준으로 대문자와 소문자를 구분했습니다.

여러분은 어떻게 푸셨나요?

여러분들께 말씀드리고 싶은 점은 저는 실력자가 아니라 신입 프론트엔지니어 입니다!
제 정답이 무조건 맞는건 아니고 더 효율적인 방법이 있을거라고 생각합니다
좋은 알고리즘이나 과정이 있다면 댓글로 공유해주시면 서로 좋은 공부가 될거같습니다:D

밑에 URL로 이동하시면 프로그래머스로 이동하실 수 있습니다

시저 암호라는 문제를 풀어보세요!
https://programmers.co.kr/learn/courses/30/lessons/12926?language=javascript

해당 내용은 깃헙에 1일 1알고리즘 프로젝트로 진행할 계획입니다.
https://github.com/Jogeonsang/JS-Algorithm

profile
개발을 사랑합니다 :)MarketDesigners - Front-End Engineer

0개의 댓글