

출처 : 인프런 코드캠프_입문자를 위한 Javascript 알고리즘 이론+실습
const ALPHABET = "abcdefghijklmnopqrstuvwxyz";
function solution(str) {
// 여기에 코드를 작성하세요
}
solution("R dzmg gl vzg ggvlpylppr");
// "I want to eat tteokbokki"
solution("Xzgh ziv xfgv");
// "Cats are cute"
처음에는 어떻게 해야할지 감이 안 잡히는 문제였다.
먼저 세 가지 케이스가 있었다.
첫 번째는 " " 공백이다. 공백은 그냥 공백으로 처리해주면 된다.
두 번째는 대문자인 경우다. 이 때는 const 알파벳에는 대문자인 경우가 없으므로 먼저 대문자를 소문자로 변경해준다. 그리고 인덱스를 이용하여 변환된 문자를 찾은 후 그걸 다시 대문자 변경 함수를 이용하여 처리해주면 된다.
세 번째는 그냥 소문자인 케이스다. 이 경우에는 const 알파벳에서의 인덱스를 활용하여 변환된 문자를 찾으면 된다.
const ALPHABET = "abcdefghijklmnopqrstuvwxyz";
function solution(str) {
let 해석본 = "";
for (let i = 0; i < str.length; i++) {
// 1. 공백인 경우
if (str[i] === " ") {
해석본 = 해석본 + " ";
continue;
}
const 인덱스 = ALPHABET.indexOf(str[i]);
// 2. 대문자인 경우
if (인덱스 === -1) {
const 대문자인덱스 = ALPHABET.indexOf(str[i].toLowerCase());
해석본 =
해석본 + ALPHABET[ALPHABET.length - 1 - 대문자인덱스].toUpperCase();
} else {
// 3. 소문자인 경우
해석본 = 해석본 + ALPHABET[ALPHABET.length - 1 - 인덱스];
}
}
return 해석본;
}
solution("R dzmg gl vzg ggvlpylppr");
// "I want to eat tteokbokki"
solution("Xzgh ziv xfgv");
// "Cats are cute"
인덱스가 0번인 a를 입력한다고 하면 a는 인덱스가 ALPHABET.length - 1번째인 z로 바뀐다.
인덱스가 1번인 b를 입력한다고 하면 b는 인덱스가 ALPHABET.length -1 에서 -1인 y로 바뀐다.
이런 식으로 인덱스가 i번이면 이는 인덱스가 (ALPHABET.length-1) - i인 문자로 바뀐다.
이를 사용해서 toLowerCase와 toUpperCase를 이용해서 대문자 소문자를 구분해주고 이를 해석본에 대해 리턴하면 값은 올바르게 해석되어서 나오게 된다.