🌈테스트 케이스: s는"AB", n는 1 이라고 가정
1. s("AB")를 Ascii 코드로 변환해 배열에 담는다
2. 배열 값마다 +n(+1)을 해준다
3. 예외 처리를 해준다(a~z:65~90
/ A~Z:97~122
이므로 해당 범위 넘어갈 경우와 공백일 경우의 처리 필요)
4. 배열에 담긴 Ascii 코드를 String으로 변환 후 문자열로 return 한다
function solution(s, n) {
var answer = '';
var ascii = []
for(var i=0; i<s.length; i++){ //Ascii변환 후 배열에 담는다
ascii.push(s.charCodeAt(i))
}
ascii = ascii.map((item) => { //예외처리와 +n 해준다
return item<92?(item==32?(item):(item+n>=91?(item+n-26):(item+n))):(item==32?(item):(item+n>=123?(item+n-26):(item+n)))
})
//string으로 변환 후 배열을 문자열로 반환한다
answer = ascii.map(item => String.fromCharCode(item)).join("")
return answer;
}
🌈 +n을 한 결과값이 Ascii코드의 알파벳 범위를 벗어난 경우
🌈 공백일 경우
item<92?(item==32?(item):(item+n>=91?(item+n-26):(item+n))):(item==32?(item):(item+n>=123?(item+n-26):(item+n)))
item<92
: 대/소문자 구분item==32
: 공백 여부 확인return item
item+n>=91
/ (소문자)item+n>=123
: +n을 했을 때 Ascii 코드의 A~Z / a~z의 범위를 넘어가는지 확인item+n-26
(알파벳이 26개 이므로 한바퀴 빼줘야 함)item+n
function solution(s, n) {
var upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var lower = "abcdefghijklmnopqrstuvwxyz";
var answer= '';
for(var i =0; i <s.length; i++){
var text = s[i];
if(text == ' ') {
answer += ' ';
continue;
}
var textArr = upper.includes(text) ? upper : lower;
var index = textArr.indexOf(text)+n;
if(index >= textArr.length) index -= textArr.length;
answer += textArr[index];
}
return answer;
}
charCodeAt()
: 해당 인덱스의 문자를 Ascii코드로 변환'ABC'.charCodeAt(0); // returns 65
fromCharCode()
: Ascii코드를 문자로 변환String.fromCharCode(65, 66, 67); // "ABC"
includes()
: 하나의 문자열이 다른 문자열에 포함되어 있는지를 판별하고, 결과를 true 또는 false 로 반환'Blue Whale'.includes('blue'); // returns false