🔗 https://school.programmers.co.kr/learn/courses/30/lessons/155652#
if(findSkipIdx) 에서 findSkipIdx가 0일 경우를 고려하지 않아 실수했다 !..
function solution(s, skip, index) {
let alphabet = Array.from({length:26}, (v,i) => String.fromCharCode(i + 97));
skip.split("").map((i) => {
const findSkipIdx = alphabet.indexOf(i);
if(findSkipIdx) alphabet.splice(findSkipIdx,1);
})
const result = s.split("").map((i)=>{
const findSIdx = alphabet.indexOf(i);
return alphabet[(findSIdx + index) % alphabet.length]
})
return result.join("")
}
1. Array.from과 fromCharCode를 이용해 소문자 알파벳이 든 alphabet 배열을 만든다.
2. alphabet에 skip할 문자를 미리 제거한다.
3. 문자열 s를 split으로 나누고 map으로 돌면서, alphabet에서 인덱스를 찾아 주어진 index만큼 더한다.(findSIdx)
4. 주어진 조건에 따라 (index를 더한 값 > alphabet의 길이 : 다시 alphabet[0]부터 시작)
alphabet.length로 나눈 나머지를 인덱스로, alphabet에서의 값을 리턴해준다.
5. result의 값은 배열이므로, result.join("")을 통해 문자열을 리턴한다.
function solution(s, skip, index) {
let alphabet = Array.from({length:26}, (v,i) => String.fromCharCode(i + 97));
skip.split("").map((i) => {
const findSkipIdx = alphabet.indexOf(i);
alphabet.splice(findSkipIdx,1);
})
const result = s.split("").map((i)=>{
const findSIdx = alphabet.indexOf(i) + index;
return alphabet[(findSIdx) % alphabet.length]
})
return result.join("")
}