[프로그래머스] 자바스크립트 - 시저 암호

멤오장·2023년 4월 3일
0

코딩테스트 연습

목록 보기
14/18

[프로그래머스] 코딩테스트 시저 암호


문제 설명

알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식


제한사항

s는 알파벳 소문자, 대문자, 공백으로 이루어진 8000이하의 문자
n은 1이상, 25이하인 자연수


입출력 예

snreturn
"AB"1"BC"
"z"1"a"
"a B z"4"e F d"

문제 풀이

function solution(s, n) {
    let answer = '';
    
    for(let i=0, max=s.length; i<max; i++){
        let code = s.charCodeAt(i),
            move = code + (n%26);
        
        if( code === 32 ) answer += ' ';
        
        if( code >= 65 && code <= 90 ){
            move > 90 ? answer += String.fromCharCode( move - 26 ) : answer += String.fromCharCode( move );
        }
        
        if( code >= 97 && code <= 122){
            move > 122 ? answer += String.fromCharCode( move - 26 ) : answer += String.fromCharCode( move );
        }
    }
    
    return answer;
}

유니코드 번호에 n을 더한 값을 문자열로 변환하여 answer에 대입

  • 32 공백
  • 65~90 대문자
  • 97~122 소문자

🤍 charCodeAt(index)
index에 해당하는 문자의 유니 코드값을 반환

var str = "HELLO WORLD";
var n = str.charCodeAt(0);
console.log(n)  // "H"에 대한 유니코드 값 반환

🤍 fromCharCode()
유니코드 값을 문자열로 반환

var res = String.fromCharCode(65);
console.log(res);  // A

🤍 아스키코드 ASCII
128개의 문자조합을 제공하는 7비트 부호
각 나라별 언어를 표현할 수 없어 이를 해결한 코드가 유니코드

🤍 유니코드 Unicode
각 나라별 언어를 모두 표현하기 위해 나온 코드 체계

profile
일단 적기

0개의 댓글