반응형

프로그래머스 - 알고리즘 고득점 Kit 완전탐색 편

 

모음사전 - 완전탐색
모음사전 - 완전탐색

 

 

 

 

문제풀이

모음의 수는 정해져 있습니다. 

그래서 vowels로 배열을 만들어서 쉽게 접근할 수 있었습니다.

vowels는 순서대로 배치했습니다.

 

재귀함수를 이용해서 단어를 생성하고, 마지막에 word와 같은 단어의 index를 찾는 방향으로 구현하고자 했습니다.

 

currentWord를 dictionary 배열에 push하면서 모든 경우의 단어를 넣었습니다.

currentWord + vowels[i]를 인자로 넣어주면서 계속 단어를 생성했습니다.

 

마지막에 사전 순으로 정렬을 하고 indexOf() 메서드를 활용하여 word의 인덱스를 찾았습니다.

function solution(word) {
  const vowels = ['A', 'E', 'I', 'O', 'U'];
  const dictionary = [];

  // 단어를 재귀적으로 생성하는 함수
  function generateWords(currentWord) {
    // 최대 길이가 5인 단어만 생성
    if (currentWord.length > 5) return;

    // 현재 단어를 사전에 추가
    dictionary.push(currentWord);

    // 각 모음을 더해서 새로운 단어 생성
    for (let i = 0; i < vowels.length; i++) {
      generateWords(currentWord + vowels[i]);
    }
  }

  // 빈 문자열에서부터 단어 생성 시작
  generateWords("");

  // 사전 순서로 정렬
  dictionary.sort();

  // 해당 단어가 사전에서 몇 번째에 위치하는지 반환
  return dictionary.indexOf(word);
}
반응형