
문제설명
- '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을 뺌
- 그 외의 경우는 공백이기 때문에 " " 반환