난이도: Lv. 2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/84512
알고리즘
1. 사전에 수록되어 있는 단어의 최대 길이가 5이므로 문자열의 길이가 5가 될 때까지 재귀함수를 수행한다.,
2. 재귀함수 수행 중 word와 일치하는 단어가 나오면 몇 번째 단어인지 answer에 저장한다.
코드
function solution(word) {
var answer = 0;
const vowel = ['A', 'E', 'I', 'O', 'U'];
let count = 0;
function dfs(str) {
if (answer) { return; }
if (str === word) { answer = count + 1; return; }
count++;
if (str.length < 5) { vowel.forEach(v => dfs(str + v)) }
}
vowel.forEach(v => dfs(v));
return answer;
}
주저리
처음 문제 보고는 수학적으로 풀면 더 빨리 풀 것 같았는데 내가 DFS 문제를 잘 못 풀어서 DFS로 풀었다.
dfs 함수 안에 있는 if(answer) {return;} 이 부분은 없어도 정상 작동하지만 answer이 정해진 경우에는 아래 코드들이 쓸데없어지기 때문에 적었다.
'코딩테스트' 카테고리의 다른 글
[JS] 더 맵게 (0) | 2024.01.03 |
---|---|
[JS] 게임 맵 최단거리 (0) | 2023.12.30 |
[JS] [3차] n진수 게임 (0) | 2023.12.27 |
[JS] [3차] 압축 (0) | 2023.12.26 |
[JS] k진수에서 소수 개수 구하기 (1) | 2023.12.24 |