코딩테스트

[JS] 모음사전

미안하다 강림이 좀 늦었다 2023. 12. 28. 19:57

 

 

난이도: Lv. 2

문제: https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

알고리즘

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이 정해진 경우에는 아래 코드들이 쓸데없어지기 때문에 적었다.