알고리즘/프로그래머스

프로그래머스 위클리 챌린지 5주차 - 모음 사전

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

 

코딩테스트 연습 - 5주차

사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니

programmers.co.kr

1. 유형

완전 탐색

 

2. 문제 접근

총경우의 수가 5^5 + 5^4 + 5^3 + 5^2 + 5입니다. 그래서 완전 탐색을 돌릴 수 있다고 판단

모든 경우의 수를 List에 넣고 word와 같은 값을 찾아줬습니다.

 

다른 풀이를 보니 규칙을 찾아서 간단하게 풀 수도 있는거 같습니다.

3. 코드

import java.util.*;
class Solution {
    static char[] cArr= {'A','E','I','O','U'};
    static List<String> ans;
    public int solution(String word) {
        int answer = 0;
        ans=new ArrayList<>();
        for(int i=1; i<=5; i++)
            dfs(0,new String(), i);
        Collections.sort(ans);
        int index=1;
        for(String tmp: ans){
            if(word.equals(tmp)){
                answer=index;
                break;
            }
            index++;
        }
        return answer;
    }
    static void dfs(int dep, String s, int len){
        if(len == dep){
            ans.add(s);
            return;
        }
        for(int i=0; i<5; i++){
            dfs(dep+1, s+cArr[i], len);            
        }
    }
}