시저 암호(프로그래머스)

정승옥(seungok)·2020년 11월 24일
0

프로그래머스

목록 보기
14/40

문제설명

  • 'AB'를 1만큼 밀면 'BC', 3만큼 밀면 'DE'
  • 'z'를 1만큼 밀면 'a'
  • 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문 작성

제한조건

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

풀이

function solution(s, n) {
    let answer = '';
    answer = s
    .split('')
    .map(str=>{
        const Code = str.charCodeAt() + n;
        if(
            str.charCodeAt() >= 'a'.charCodeAt() &&
            str.charCodeAt() <= 'z'.charCodeAt()
        ){
            if(Code > 'z'.charCodeAt()){
                return String.fromCharCode(Code - 26);
            }else{
                return String.fromCharCode(Code);
            }
        }
        if(
            str.charCodeAt() >= 'A'.charCodeAt() &&
            str.charCodeAt() <= 'Z'.charCodeAt()
        ){
            if(Code > 'Z'.charCodeAt()){
                return String.fromCharCode(Code - 26);
            }else{
                return String.fromCharCode(Code);
            }
        }
        return " ";
    }).join('');
    return answer;
}

체크포인트

  • str.charCodeAt(): 해당 문자의 아스키코드 번호 반환
  • String.fromCharCode(): 해당 번호의 위치에 있는 아스키코드 문자 반환
  • 문자가 'a'~'z'일 경우와 'A'~'Z'일 경우를 나누어 n만큼 더했을때 'z' 또는 'Z'의 아스키코드 번호보다 클 경우 26을 뺌
  • 그 외의 경우는 공백이기 때문에 " " 반환
profile
Front-End Developer 😁

0개의 댓글