프로그래머스 Lv.2: 모음사전

Steve·2021년 11월 15일
0

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

규칙을 도저히 모르겠어서 그냥 재귀로 사전을 통째로 만들어서 인덱스를 반환했다.

이 글을 쓰면서 다른 사람들이 올려놓은 글을 보니, 수학 문제처럼 규칙을 파악해서 푼 사람도 있었고, 나처럼 사전을 만든 뒤 완전탐색으로 푼 사람도 있었다.

이거 규칙을 파악한 다음 푸는게 정답인가? 라는 생각이 들어 다른 사람들의 글을 보던 중 한 사람의 글이 인상적이었다.

복잡하게 생각하면 오히려 난이도가 높아지는 문제다.
나도 처음에는 단어가 배열되는 규칙을 찾아 값이 나오는 함수를 구현하려 했는데, 문득 수학 문제를 풀고있는 것이 아닌가란 생각이 들었다.
코딩 문제란 것을 잊지 않으면, 사전 자체를 만들어버리는 생각을 떠올리는 것은 간단하다.

만약 사전을 직접 만든다면, 사전안의 단어의 갯수는 5^5 + 5^4 + 5^3 + 5^2 + 5^1 + 4x5 = 3925 개로 충분히 만들 수 있는 숫자다.

단어의 개수가 백만, 천만 단위라면 규칙을 찾아야 할 것이지만, 이 문제에는 해당되지 않는다.

내가 문제를 풀었을 때 완전탐색이 가능할 것인가? 라는 부분을 생각하지 않고 그냥 무작정 했는데, 저런식으로 완전탐색의 근거를 찾을 수 있는 것을 배웠다.

function solution(word) {
    var answer = 0;
    let dict = [];
    let vowel = ['','A','E','I','O','U'];
  
    function DFS(L, str){
        if (L > 4) {
            if (!dict.includes(str)) dict.push(str);
        }
        else {
            for (let i = 0; i < vowel.length; i++){
                DFS(L+1, str+vowel[i]);
            }
        }
    }
  
    DFS(0,'');
    dict.sort()
    answer = dict.indexOf(word)
    return answer;
}
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글