2018~2019/Level 1

시저 암호 [JavaScript]

전기도둑 2018. 10. 1. 22:48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function solution(s, n) {
    var answer = '';

    answer = s.split('').map(a => {
        var code = a.charCodeAt(0);

        if(code === 32)
            return ' ';

        if(code >= 65 && code <= 90) {
            if(code+n > 90)
                return String.fromCharCode(code+n-26);
            else
                return String.fromCharCode(code+n);  
        }
        else if(code >= 97 && code <= 122) {
            if(code+n > 122)
                return String.fromCharCode(code+n-26);
            else
                return String.fromCharCode(code+n);  
        }      
    }).join('');

    return answer;
}


- 문자열을 split하여 요소로 쪼갠다.

- map을 통해 아스키코드 값을 구한다.

- 공백인 경우(아스키 코드 값 32) 그대로 공백을 반환한다.

- 65~90 대문자인 경우와 97~122 소문자인 경우를 나눈다.

- 90과 122을 넘어가는 경우 26을 빼준다.

- join을 통해 다시 문자열을 합친다.