https://programmers.co.kr/learn/courses/30/lessons/12926
let s = "a B z"
let n = 4;
function solution1(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;
}
console.log(solution1(s, n)); // e F d
- 대문자, 소문자, 빈 문자열이 할당되어있는 변수를 만든다.
let s = "a B z"
let n = 4;
function solution2(s, n){
return s.split("").map(value => {
if (value === " ") return value;
return value.toUpperCase().charCodeAt() + n > 90
? String.fromCharCode(value.charCodeAt() + n - 26)
: String.fromCharCode(value.charCodeAt() + n)
}).join("");
}
console.log(solution2(s, n)); // e F d
- split()메서드로 문자를 개별로 분리한 뒤 배열에 담는다.
let s = "a B z"
let n = 4;
function solution3(s, n) {
var chars = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXY "
return s.split('').map(e => chars[chars.indexOf(e)+n]).join('');
}
console.log(solution3(s, n)); // e F d
- 문제의 조건 중 n은 25 이하인 것을 활용하여 문자가 z인 경우 최대 25까지 밀리는 것을 감안하여 문자를 중복하여 작성한 후 chars변수에 할당한다.