[프로그래머스 위클리 챌린지]#84512 5주차_모음사전

SeungBird·2021년 9월 16일
0

문제

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

단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.

입출력 예제

wordresult
"AAAAE"6
"AAAE"10
"I"1563
"EIO"1189

풀이

이 문제는 dfs(깊이 우선 탐색) 알고리즘을 이용해서 모든 경우의 수를 구한뒤 풀 수 있었다.

import java.util.ArrayList;
import java.util.Collections;

class Solution {
    char[] arr = {'A', 'E', 'I', 'O', 'U'};
    StringBuilder sb;
    ArrayList<String> list;
    
    public int solution(String word) {
        list = new ArrayList<>();
        
        dfs("");
        
        Collections.sort(list);
        
        return list.indexOf(word)+1;
    }
    
    public void dfs(String temp) {
        if(temp.length()==5) {    //최대 길이
            return;
        }
        
        sb = new StringBuilder(temp);
        for(int i=0; i<5; i++) {
            sb.append(arr[i]);
            list.add(sb.toString());
            dfs(sb.toString());
            sb.delete(sb.length()-1, sb.length());
        }
    }
}
profile
👶🏻Jr. Programmer

0개의 댓글