알고리즘 - 완전탐색 - 숫자조합 4

mrtorture·2023년 12월 9일

최초 23/12/09

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

문제 요약

알파벳 'A', 'E', 'O', 'I', 'U'로 구성된 크기 5 이하의 단어만 수록된 사전이 있음
ex)
"A"
"AA"
"AAA"
"AAAA"
"AAAAA"
"AAAAE"
이 때 단어가 주어질 때 해당 사전에서 몇번째 단어 인지 찾기
ex) "AAAAE" > 6
ex) "AAAE" > 10
ex) "I" > 1563
ex) "EIO" > 1189

준비물

자료형 관련: ArrayList.add(), ArrayList.indexOf()
알고리즘 관련: recursive 함수, permutation 구현 경험
디버깅 관련: 메모장에 예제 쓰는 습관

구현

import java.util.List;
import java.util.ArrayList;

class Solution {
    private final String[] chars = {"A", "E", "I", "O", "U"};
    private final List<String> dict = new ArrayList<>();
    
    public int solution(String word) {
        makeWords(5, "");
        
        return dict.indexOf(word) + 1;
    }
    
    private void makeWords(int length, String prefix) {
        if (length < 1) {
            return;
        }
        
        for (String char1 : chars) {
            String newWord = prefix + char1;
            dict.add(newWord);
            makeWords(length - 1, newWord);
        }
    }
}
profile
명확하게 생각하고 싶다

0개의 댓글