반응형
문제
내 풀이
→ 코드 실행은 모두 통과하는데(추가한 테케 포함),
제출하면 테스트 2, 9 제외하고 모두 실패로 뜬다.
왜 실패하는지 원인 분석 필요함.
function solution(s, skip, index) {
const alphabetList = ['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'];
return [...s].map(word => {
let wordIdx = alphabetList.join('').split(word)[0].length;
let count = 0;
while(count < index) {
if(![...skip].includes(alphabetList[wordIdx])) {
count++;
}
wordIdx++;
if(wordIdx === 26) {
wordIdx = 0;
while([...skip].includes(alphabetList[wordIdx])) {
wordIdx++;
}
};
}
return alphabetList[wordIdx];
}).join('');
}
참고한 풀이
애초에 미리 alphabet 리스트 중에서 skip은 빼고 시작한다.
function solution(s, skip, index) {
const alphabet = ['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'].filter(w => !skip.includes(w));
return [...s].map(a => alphabet[(alphabet.indexOf(a) + index) % alphabet.length]).join('')
}
반응형
'CS > 알고리즘' 카테고리의 다른 글
[230325] 이진 변환 반복하기 (0) | 2023.03.26 |
---|---|
[230325] 최솟값 만들기 (0) | 2023.03.26 |
[230323] 최빈값 구하기 (0) | 2023.03.26 |
[230323] 유한소수 판별하기: toFixed (0) | 2023.03.26 |
[230322] 등수 매기기: indexOf (0) | 2023.03.26 |