문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답
function solution(s, skip, index) {
const sToArr = s.split("");
const skipToArr = skip.split("");
let answer = "";
const alphabetArr = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
];
// 스킵할 알파벳을 기존 알파벳 배열에서 제외시킨 새로운 알파벳 배열을 만든다
const newAlphabetArr = alphabetArr.filter(x => !skipToArr.includes(x));
for (const i = 0; i < sToArr.length; i++) {
// newAlphabetIndex는 기존 알파벳 인덱스에서 index만큼을 더한 값이다
const newAlphabetIndex = [newAlphabetArr.indexOf(sToArr[i]) + index];
// newAlphabetIndex가 newAlphabetArr.length를 초과할 때
// newAlphabetIndex를 newAlphabetArr.length로 나눈 나머지를 인덱스로 갖는다
if (newAlphabetIndex >= newAlphabetArr.length) {
answer = answer + newAlphabetArr[newAlphabetIndex % newAlphabetArr.length];
} else {
answer = answer + newAlphabetArr[newAlphabetIndex];
}
}
return answer;
}