https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=javascript
처음에는 뭔가 수학적 규칙을 찾아서 구현하려고 했는데... 못찾았음 ㅜㅜ
어차피 경우의 수가 많지는 않았기 때문에, 그냥 루프 돌려서 풀음
다른 사람 풀이 보니 더 간단히 푸는 방법이 많았음.
답은 등비수열이었던 듯...
직접 비교해보니 걍 루프 돌리는 건 약 0.3ms 정도 나오던데, 등비수열로 돌리면 0.05ms 정도 나옴.
차이가 확실히 남.
모든 프로그래머스 문제 관련 코드들은 GitHub 링크 에 있음.
<script>
const alphabet = ['A', 'E', 'I', 'O', 'U'];
const check = (str, count, word) => {
for (let i = 0; i < alphabet.length; i++) {
const target = str + alphabet[i];
count++;
if (target === word) {
return {success: true, count};
}
if (target.length < alphabet.length) {
const result = check(target, count, word);
if (result.success) {
return result;
} else {
count = result.count;
}
}
}
return {success: false, count};
};
function solution(word) {
return check('', 0, word).count;
}
</script>