알고리즘/PROGRAMMERS

모음사전(Lv.2)

현대타운301 2024. 3. 25. 18:22

 


 

문제 설명

 

 

 

입출력 예시

 

 

요약

A, E, I, O, U 모음을 가지고 만들 수 있는 1~5 자리의 모든 조합(경우의 수) 구하기

 


 

풀이

 

접근 방식

1. 순서 파악

  → A, AA, AAA, AAAA, AAAAA, AAAAE, AAAAI, AAAAO, AAAAU, AAAE, AAAEA, AAAEE, AAAEI, AAAEO, ...

  → dfs로 length가 5가 되면 return

 

2. dfs 메소드 구현

  → 재귀 방식을 통한 모든 조합을 구하는 dfs 메소드 구현

 


 

코드리뷰

 

import java.util.*;

public class Solution {
    String[] arr = {"A", "E", "I", "O", "U"};
    List<String> list = new ArrayList<>();
    
    public void dfs(String letter) {	// dfs 재귀함수
        list.add(letter);
        if(letter.length() == 5) {	// 길이가 5가 되면 탈출
            return;
        }
        for(String nextLetter : arr) {	// 모음 배열(arr)에서 하나씩 떼서 그 전에 있던 문자와 합친 후 다음 dfs 인자로 넘김
            dfs(letter + nextLetter);
        }
    }
    public int solution(String word) {
        for(String letter : arr) {
            dfs(letter);	// "A"부터 넘겨주면서 dfs 시작
        }
        int answer = list.indexOf(word) + 1;	// index는 0부터 시작하므로 1 더해서 출력
        return answer;
    }
}