[프로그래머스] Lv.1 시저 암호

Miro·2022년 7월 30일
0
post-thumbnail

프로그래머스 Lv.1 시저 암호

문제, 제한사항, 입출력

나의 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function solution(s, n) {
    let answer = s.split('');
    let result = '';
    
    for(let i = 0; i < answer.length; i++) {
        if(answer[i] === ' ') {
            result += ' ';
        } else {
            let a = answer[i].charCodeAt(0+ n;
            
            if(answer[i].charCodeAt(0>= 65 && answer[i].charCodeAt(0<= 90) {
                if(a > 90) a -= 26;
            } else if(answer[i].charCodeAt(0>= 97 && answer[i].charCodeAt(0<= 122) {
                if(a > 122) a -= 26;
            }
            
            result += String.fromCharCode(a);
        }
    }
    
    return result;
}
cs

문자열 ssplit을 이용해 분해하여 answer에 할당해준다.

반복문을 0부터 answer의 길이 만큼 반복한다.

만약 answer[i]가 한 칸 띈 공백이면 빈 문자열 result에 한 칸 띈 공백을 더해준다.

만약 answer[i]가 문자이면 아스키코드화 시켜서 n을 더해주고, a에 할당한다.

아스키코드화 시킨 숫자가 65(A)~90(Z) 사이일때 90(Z)을 넘는다면 a에서 26을 빼서 다시 65(A)부터 시작하게 한다.

마찬가지로 아스키코드화 시킨 숫자가 97(a)~122(z) 사이일때 122(z)을 넘는다면 a에서 26을 빼서 다시 97(a)부터 시작하게 한다.

아스키코드가 할당된 a를 다시 문자로 변환하여 result에 더해준다.

profile
프론트엔드 개발자(진)

0개의 댓글