-빈칸이 어떻게 표현되는가 개념
Javascript
function solution(s, n) {
var answer = "";
var lowerCase = "abcdefghijklmnopqrstuvwxyz";
var upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var array = [];
for (let i = 0; i < s.length; i++) {
//1-1. n의 알파벳 하나 당 lowerCase 배열 내의 인덱스 전체를 돌면서 확인하도록 유도
for (let j = 0; j < lowerCase.length; j++) {
//1-2. 인덱스를 찾으면, 그 인덱스에 해owerCase[j])
//1-3. lowerCase[j+n] === undefined(인덱스 번호가 z 다음어야 돼서 존재하지 않을 때)
if (s[i] === lowerCase[j] && lowerCase[j + n] === undefined) {
array.push(lowerCase[n - 1]);
break;
} else if (s[i] === lowerCase[j]) {
array.push(lowerCase[j + n]);
break;
} else if (s[i] === upperCase[j] && upperCase[j + n] === undefined) {
array.push(upperCase[n - 1]);
break;
} else if (s[i] === upperCase[j]) {
array.push(upperCase[j + n]);
break;
} else if (s[i] === " ") {
array.push(" ");
break;
}
// var ss = array.join("");
// var newArray = [];
}
answer = array.join("");
return answer;
}
solution("XxYzKoPPPPsdfsaf", 5);
else if (s[i] === upperCase[j] && upperCase[j + n] === undefined) {
array.push(upperCase[n - 1]);
여기에 있었음, j+n의 j가 무조건 26번째 알파벳 z가 된다는 보장이 없는데, j가 25를 초과하는 경우 무조건 n-1로 일률적으로 수를 재구성하도록 로직을 짰으니, 당연히 틀릴 수 밖에 없었던 거다.
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;
}