알고리즘/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;
}
}