안녕하세요 Macus입니다.
이전편 문자열을 정수로 바꾸기를 이어 6편을 작성하겠습니다.
6편은 시저 암호라는 알고리즘 문제입니다.
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"
는 1
만큼 밀면 "BC"
가 되고, 3
만큼 밀면 "DE"
가 됩니다. "z"
는 1
만큼 밀면 "a"
가 됩니다. 문자열 "s"
와 거리 n
을 입력받아 "s"
를 n
만큼 민 암호문을 만드는 함수, solution
을 완성해 보세요.
공백은 아무리 밀어도 공백입니다.
s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
s의 길이는 8000이하입니다.
n은 1 이상, 25이하인 자연수입니다.
위에 설명을 한번 풀어보세요!
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